跳至主要内容

博文

目前显示的是标签为“Editor”的博文

SpaceVim with NeoVim in Docker

在Docker里玩了会儿neovim+spacevim。 ``` docker run --name nvim -it --rm spacevim/spacevim nvim ``` 版本是最新的 ``` NVIM v0.7.0-dev+792-gc46f7caad Build type: RelWithDebInfo LuaJIT 2.1.0-beta3 Compilation: /usr/bin/cc -DNVIM_TS_HAS_SET_MATCH_LIMIT -O2 -g -Og -g -Wall -Wextra -pedantic -Wno-unused-parameter -Wst rict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-st rong -fno-common -fdiagnostics-color=always -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 - DNVIM_UNIBI_HAS_VAR_FROM -DMIN_LOG_LEVEL=3 -I/usr/src/neovim/build/config -I/usr/src/neovim/src -I/usr/src/neovim/.deps /usr/include -I/usr/include -I/usr/src/neovim/build/src/nvim/auto -I/usr/src/neovim/build/include Compiled by root@buildkitsandbox ``` 不过启动后老报错: ``` Error detected while processing BufEnter Autocommands for "*": E117: Unknown function: LaTeXtoUnicode#Refresh startify: Can't read viminfo file. Read :help startify-faq-02 `...

Java 开发不可错过的 IntelliJ IDEA 2016.1 来了

手头在用的 IDE 更新到了 [IntelliJ 2016.1](https://blog.jetbrains.com/idea/2016/03/intellij-idea-2016-1-is-here/),发现多了不少好东东,包括: 1. 更好用的 VCS 合并界面 2. 可以直接 Alt + Enter 导入 static constants 3. 尊重 Gradle 的 SourceSets,直接导入为 IDEA Modules 4. 可以提示将 Guava API 转换为对应的 Java 8 API 5. 更丰富的语言支持,包括 Scala、JavaScript 和 TypeScript 等 6. 更高级的 Spring Framework 支持 7. 更漂亮的启动画面 …… ![Start splash of IDEA2016 Community Edition](http://blog.jetbrains.com/idea/files/2016/03/IntelliJIDEA_20161_blog@2x.png =600x400) 更多精彩请参考以上链接所指向的 INTELLIJ IDEA BLOG。

VIM Bundle - a plugins manager

[Vundle](https://github.com/VundleVim/Vundle.vim) 是一个为 VIM 设计的插件管理器, 这个名字其实就是 VIM Bundle 的缩写。 第一步是下载 Vundle.vim 文件,可以直接从 GitHub 上克隆: $ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 首先要加载 Vundle,要为 VIM 的 runtime path 添加指向 Vundle.vim 的路径, filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " alternatively, pass a path where Vundle should install plugins " call vundle#begin('~/some/path/here') " let Vundle manage Vundle, required Plugin 'gmarik/Vundle.vim' 接着指定需要哪些插件 (plugins) " The following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo Plugin 'tpope/vim-fugitive' " plugin from http://vim-scripts.or...

VIM + CTags (2)

CTAGS工作的原理其实就是抓取源文件中所有的标签名字——包括关键字、变量名、方法名等,将它们排序后存储在标签列表文件中。VIM可以读取这个标签列表,根据用户的需要执行跳转。 CTAGS生成标签列表的方法很简单,以下命令展示了如何使用CTAGS抓取src目录中的所有文件生成标签列表: # ctags -f .\.tags -h .java -R .\src %JAVA_HOME%\src 这里用到了ctags的2个option(命令选项): -f [name]: 指定生成的标签列表的存储路径。 按照一定的规则存放所有的项目文件是一个好习惯。这里如果[name]指定为 - ,将会在stdout输出生成的标签列表。 -R: 等效于--recursive,要求递归对子目录进行抓取,一并生成标签。 对于Java、C#这些通过package支持命名空间的语言来说,这无疑是个非常高效的选项。想想com.jlazy.ctags.vim.Sample 这样的名字吧,对应到文件系统该需要多少个子目录,如果手动来抓取,那岂不是要抓到手抽筋…… -h [list]: 指定待处理的文件扩展名列表。 例如,".h.c.cpp.cxx.hpp"是为典型的C++程序指定的文件扩展名列表。 仔细打开ctags生成的tags文件看看,会发现头部其实定义了一些表明当前文件的状态的变量: !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ !_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ !_TAG_PROGRAM_NAME Exuberant Ctags // !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ !_TAG_PROGRAM_VERSION 5.5.4 // 通常直接生成的tags文件都是排过序的(sorted),显而易见排序的目的是方便vim通过查询算法快速定位标签。就像二分查找需要应...

VIM + CTags (1)

通常情况下,程序员在日常工作中打开的不可能只有一份文件——想想Java的package和class,C、C++的header files,还有.Net C#的partial class就会赞同这个观点。VIM这种强悍的编辑器自然充分考虑到程序员的需求 —— move around quickly。 VIM支持CTAGS程序,这是一个独立的程序,大多数Unix/Linux系统都安装了它的实现。只需要在$VIM/plugin中安装 taglist 插件即可借助于ctag的威力对所有文件进行tag的索引。值得一提的是,ctag本身在不同系统上的实现是可能有所不同的,推荐使用的是source forge上的开源项目 exuberant ctags。 C:\Program Files\GNU>ctags --version Exuberant Ctags 5.5.4, Copyright (C) 1996-2003 Darren Hiebert Compiled: Mar 29 2004, 22:21:09 Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net Optional compiled features: +win32, +regex, +internal-sort 安装了CTAGS程序之后,可以在系统变量path中加入该程序的路径,比较方便。如果不加入path,则需要在vim中加入配置行: let Tlist_Ctags_Cmd='C:\Program Files\GNU\ctags.exe' let Tlist_Use_Right_Window=1 let Tlist_File_Fold_Auto_Close=1 使用taglist的第一步,就是调用CTAGS程序生成tag list。 > ctags.exe $SRC\*.cpp $SRC\*.h 如果需要针对给定目录下的所有代码文件都生成tag,可以采用: > ctags.exe -R $SRC\*.java 生成的tags文件就是所谓的tag list(标签列表文件)。VIM可以通过这个文件来查找任何一个标签被定义的位置并跳转。 如果知道一个标签的名字,可以通过命令...

Project in VIM

最近想要用VIM组织一下文件,搜索了几个插件,觉得project还不错。VIM本身朴素的文本界面决定了文件树的简洁特质。 Project插件为VIM提供了组织文件的功能。用户可以将常用的文件组织到一个文件列表中。这份列表将会被VIM显示在左侧的窗口中。可以按『回车』键或是双击文件名来打开文件。这比起另一个插件『file-explorer』要容易使用。 这个插件还可以帮助用户切换到另一个目录,并运行vim的脚本。这些脚本可以修改环境变量,将编译器包含到$PATH变量中。这使得需要操作多个项目变得轻松易行。 由于Project插件内置了对VIM的folder的支持,因此可以自由地使用折叠功能来控制各个directory结点。而且使用'/'或是'?'进行查找的时候,丝毫不受折叠的影响。真是太酷了! 其它特点包括: 加载或是卸载目录中所有的文件(\r)。 Grepping项目中所有的文件,这个特征还没有研究,不知道Windows下是否也支持grep。 运行一个用户自定义的脚本(非常有用的功能,可以用于定制编译环境)。 高度可定制。用户甚至可以自己编辑project的定义文件。 可以配合netrw插件,通过不同的协议(如ftp、rcp、scp或是http等)来操作不同的文件。

近期关注的编辑器

最近装了个Ruby,顺便也用了用它自带的一个编辑器 SciTE 。虽然UI看起来有点质朴,不过功能还是挺不错的。 同事推荐 Notepad++ ,据说也是一个免费的开源工具,运行在Windows上的速度很快。看了一下官方主页,这个工具使用了Win32 API和STL来编写,因此运行速度很快,而且编译出来的二进制代码比较小。 后来发现,这两个编辑器都是基于 Scintilla 组件所编写的。这是一个很不错的editing component,支持Win32和GTK+。

Python IDE List

今天收到的来自comp.lang.python的讨论列表中,又看到了一个家伙询问使用哪种IDE比较合适。在社区中,这种讨论无疑又会引发editor war... Anyway,这不是重点,刚好有位兄台给了一个list,列举了绝大多数可用的Python IDE,觉得比较全,就摘抄过来。 Name Platform Notes ActiveGrid Linux/Windows/Mac Full featured, free (Apache licensed) IDE bundled with wxPython, features projects, scintilla, and debugging Anjuta Unix + GNOME Cross-language IDE; syntax coloring & folding for Python. BlackAdder Windows/Linux Commercial with all the features of IDLE, support for Ruby, and Qt GUI editor. BoaConstructor Python + wxPython RAD GUI building IDE, similar to Delphi. Code Crusader Linux x86 Commercial IDE with support to 30 other languages. CodeForge Unix Commercial cross-language IDE; nice multi-user project manager. DrPython Python + wxPython Simple, clean editing environment for Python intended primarily for use in schools. Eclipse Java + SWT See EclipsePythonI...