PyCharm 必备插件合集(更新中)

PyCharm的插件很好用,能够在写代码时加成很多。下面看一下目前我用的一些插件。

1. .ignore

我们做的每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。

插件使用:https://www.jianshu.com/p/bf1bfa0890e8

2. BashSupport

bash-support 是一个高度定制化的 vim 插件,它允许你插入:文件头、补全语句、注释、函数、以及代码块。它也使你可以进行语法检查、使脚本可执行、一键启动调试器;而完成所有的这些而不需要关闭编辑器。

3. Chinese ​(Simplified)​ Language Pack EAP(必备推荐)

JetBrains的官方中文插件,能够直接使PyCharm实现中文版。

我的这篇文章有详细介绍:https://xiaoshuwen.blog.csdn.net/article/details/106182672

4. Context Free Grammar

增加了对类似于EBNF的上下文无关文法的支持。
目前,该插件旨在在规范和/或文档编制阶段使用语法。


2020.07.29更新

5. Material Theme UI(必备推荐)

相信很多用过Sublime的同学,一装完pycharm的第一感觉就是:“怎么这么难看”,然后赶紧去找教程把主题换回 Sublime 主题。其实不用这么麻烦,只需要装了这个插件,一键解决你的烦恼。

Material Theme UI 是JetBrains IDE(IntelliJ IDEA,WebStorm,Android Studio等)的插件,可将原始外观更改为Material Design外观。最初的灵感来自 Sublime Text 的Material Theme,这个插件提供了一整套设置,可以按照你想要的方式调整IDE。

 

6. CSV Plugin(必备推荐)

它可以让CSV各个列之间区别明显,很清晰的显示各种颜色的高亮

 

7. CodeGlance

将类似于Sublime中的代码小地图嵌入到编辑器窗格中。使用自定义颜色进行语法高亮,同时使用明暗主题。

8. Statistic 

statistic是一个项目统计插件,简单来说就是可以给出一个项目的统计信息,包括文件和代码量等,在Pycharm的左下角增加一个Statistic选项,点击这个按钮就可以查看项目的统计信息了。

9. Rainbow Brackets(必备推荐)

这个插件可以让代码块之间很清晰的显示出各种颜色的高亮,而且支持的编程语言还居多,比如:Java, Scala, Clojure, Kotlin, Python, Haskell, Agda, Rust, JavaScript, TypeScript, Erlang, Go, Groovy, Ruby, Elixir, ObjectiveC, PHP, HTML, XML, SQL, Apex language, C#, Dart ...


2021.4.6

10. SonarLint(必备推荐)

Screenshot 1

SonarLint是一个免费的IDE扩展,可让在编写代码时修复错误和漏洞! 像拼写检查器一样,SonarLint可以即时突出显示编码问题,并提供清晰的修复指导,因此可以在提交代码之前对其进行修复。 在各类IDE(Eclipse,IntelliJ,Visual Studio,VS Code)和编程语言中,SonarLint能够帮助所有开发人员编写更好、更安全的代码!

相关推荐
package com.ylw.p2p.common.utils; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FileUtils { public final static Map<String, String> IMG_FILE_TYPE_MAP = new HashMap<String, String>(); /** * @Description: 图片文件上传 * @author Xiao.Sky * @creaetime 2015年4月17日下午5:20:27 * @param request * @param response * @param photo * @param strtmp * 文件名称 xxx.jpg * @param path * 文件路径 * @param num * @return */ public static boolean updatePhoto(HttpServletRequest request,HttpServletResponse response, File photo, String strtmp,String path, long num) { File dir = new File(path); // 如果不存在就创建次文件夹 if (!dir.exists()) { dir.mkdirs(); } File newFile = new File(dir, strtmp); // 如果存在此文件就删除此文件 if (newFile.exists()) newFile.delete(); BufferedInputStream bis = null; FileInputStream fis = null; try { fis = new FileInputStream(photo); FileOutputStream fos = new FileOutputStream(newFile); BufferedImage src = ImageIO.read(fis); ImageIO.write(src, "png", fos); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != bis) { bis.close(); } if (null != fis) { fis.close(); } } catch (IOException e) { e.printStackTrace(); } } return true; } /** * * @Description: 普通文件上传 * @author Xiao.Sky * @creaetime 2015年4月23日下午3:33:53 * @param request * @param response * @param photo * @param strtmp * @param path * @param num * @return */ public static boolean updateFile(HttpServletRequest request,HttpServletResponse response, File photo, String strtmp,String path, long num) { File dir = new File(path); // 如果不存在就创建次文件夹 if (!dir.exists()) { dir.mkdirs(); } File newFile = new File(dir, strtmp); // 如果存在此文件就删除此文件 if (newFile.exists()) newFile.delete(); BufferedOutputStream bos = null; BufferedInputStream bis = null; FileInputStream fis = null; try { fis = new FileInputStream(photo); long s = fis.available(); // 检查文件上传的大小,文件不能大于2MB 2097152 if (s > num) { return false; } bis = new BufferedInputStream(fis); FileOutputStream fos = new FileOutputStream(newFile); bos = new BufferedOutputStream(fos); byte[] buf = new byte[4096]; int len = -1; while ((len = bis.read(buf)) != -1) { bos.write(buf, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != bos) { bos.flush(); bos.close(); } if (null != bis) { bis.close(); } if (null != fis) { fis.close(); } } catch (IOException e) { e.printStackTrace(); } } return true; } /** * Discription:[getAllFileType,常见文件头信息] */ static{ IMG_FILE_TYPE_MAP.put("jpg", "FFD8FF"); // JPEG (jpg) IMG_FILE_TYPE_MAP.put("jpeg", "FFD8FF"); IMG_FILE_TYPE_MAP.put("png", "89504E47");// PNG (png) IMG_FILE_TYPE_MAP.put("bmp", "424D"); // Windows Bitmap (bmp) } /** * * @Description:getImageFileType,获取图片文件实际类型,若不是图片则返回null * @author Tang.Homvee * @creaetime 2015年8月21日下午5:43:53 * @param f * @return */ public final static String getImageFileType(File f) { if (isImage(f)) { ImageInputStream iis = null; try { iis= ImageIO.createImageInputStream(f); Iterator<ImageReader> iter = ImageIO.getImageReaders(iis); if (!iter.hasNext()) { return null; } ImageReader reader = iter.next(); return reader.getFormatName(); } catch (IOException e) { e.printStackTrace(); return null; } catch (Exception e) { e.printStackTrace(); return null; }finally{ if(iis != null){ try { iis.close(); } catch (IOException e) { } } } } return null; } public final static String getFileByFile(File file) { String filetype = null; byte[] b = new byte[50]; InputStream is = null; try { is = new FileInputStream(file); is.read(b); filetype = getFileTypeByStream(b); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(is != null){ try { is.close(); } catch (IOException e) { } } } return filetype; } public final static String getFileTypeByStream(byte[] b) { String filetypeHex = String.valueOf(getFileHexString(b)); Iterator<Entry<String, String>> entryiterator = IMG_FILE_TYPE_MAP .entrySet().iterator(); while (entryiterator.hasNext()
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页