5 个最好的 Vim 速查卡 (Cheat Sheet)

Vim(Vi Improved) 早已替代了 Vi, 它存在于大多数的 Linux 发行版中。所以基本上 Vi 和 Vim 在你的系统中就是同一个程序,我用的 Mac, vi 命令就是一个指向到 vim 的链接

ls -l $(which vi)
lrwxr-xr-x 1 root wheel 3 Sep 20 23:47 /usr/bin/vi -> vim

macOS Sierra 自带的 Vi/Vim 版本仍然是 7.4,我用 brew install macvim 安装了最新版的 Vim 8.0, 由于只想启动 MacVim 控制台的 Vim,  所以把 vi/vim 命令链接到新版 Vim 上。

alias vim=/usr/local/Cellar/macvim/8.0-121/MacVim.app/Contents/MacOS/Vim
alias vi=vim

这里找来了 5 个最好的 Vim Cheat Sheet, 不仅每个按键本身的操作,还有组合健, 窗口,缓冲区,寄存器等操作。

1. Vim Cheat Sheet for Programmers

阅读全文 >>

类别: Vim. 标签: . 阅读(442). 评论(0) »

《Practical Vim》阅读笔记 (1)

Vim 的东西时而学一点,但很快又会忘记,就是最简单的 h, j, k, l 来移动光标都会有所迟疑,因为一直未强迫自己完全脱离方向键来使用 Vim,下个目标是 87 键的键盘都嫌多,打算入一个 61 键的 WSAD 键盘, HHKB 还是有些极端了。

找到了一本学习 Vim 的好书 《Practical Vim》第二版,阅读时把对自己有用的东西仅当笔记记下来备忘,这个其实更应该记录在我的 Evernote 中作为私有笔记。重点的东西我在书中注解了,这里的笔记只能算是一个补充。 阅读全文 >>

类别: Vim. 标签: . 阅读(13). 评论(0) »

Vim 中 Java 代码自动完成 - vim-javacomplete2

用 Java 进行编码基本还是离不开 IntelliJ IDEA 或 Eclipse, 看别人完全用 Vim 进行 Javascript 项目编程很是眼红,估摸着能不能把 Vim 打造成一个更强的 Java IDE。语法高亮是不在话下,最主要是给它加上自动完成功能,不光对当前类,项目中的方法或变能能提示,而且必须像 Java IDE 那样理解所有的项目依赖。这就是今天试用的一个 Vim 插件 vim-javacomplete2,另种可能更好的方案 YouCompleteMe + Eclim 还会再研究。

提到 Vim 的自动完成功能,有必要了解 Vim 自带的提示功能

  1. ctrl - n/p:  Vim 根据当前缓冲区的关键字来提示,像 Sublime 或 Visual Studio Code 中的关键字提示
  2. ctrl - x 进行自动自动完成模式,接着一些操作如 ctrl - l/n/t/i 完成类似于 ctrl - n/p 的操作; ctrl - k 能基于字典自动完成,完整按键是 ctrl - x ctrl -k
  3. ctrl - x ctrl - o, 这个单独拉出来,是使用 Vim 的 Omni Completion 功能来自动完成,因为将要用到的 vim-javacomplete2 就依赖于这个功能

除 YouCompleteMe 插件外,另外还两个 Vim 下的自动完成插件是 NeoCompleteVimCompleteMe

摘要部分算是说完了,现在开始体验 vim-javacomplete2 对 Java 项目的自动完成功能。它所有完成的代码提示不仅要支持基本的 Java 类库, 当前项目的类, 手动添加的 jar 包 ,还能支持 maven, gradle 和 Eclipse 的 .classpath 文件中定义的 classpath, 这完全能应付我们实际中的项目了。实际运作也是一个 C/S 结构,这个插件会启动一个 javavi server, 用 javaparser 来解析依赖, 然后 Vim 中用 omnifunc 经 socket 连接到 javavi server 获得提示列表的。 阅读全文 >>

类别: Vim. 标签: . 阅读(28). 评论(0) »

Vim 中标签(tab) 操作

Vim 自 7.0 开始支持 tab 页了,这就像很多数文本编辑器那样方便在多文件中切换,而不是只能使用 Buffer 暗地里来回切。默认时标签上显示 tab 序号加上当前打开的文件名。

注:Visual Studio Code 1.1.1 目前尚不支持 tab 功能。

Vim 中关于 Tab 的操作命令如下:

vim -p file1 file2 file3....   在多标签中打开多个文件

:tabe[dit] 或  :tabnew          在当前标签后打开新的标签

:tabn[ext] 或 gt         切换到下一个 tab

:tabp[revious] 或 gT   切换到上一个 tab

:tabn [N]    切换到第 N 个 tab

:tabfir[st]   切换到第 1 个 tab

:tabl[ast]    切换到最后一个 tab 阅读全文 >>

类别: Vim. 标签: , . 阅读(28). 评论(0) »

Vi 中的光标位置操作

Vi 中的光标操作是其他众多命令,如(d-delete, c-change, yy) 的基础。它犹如汇编中的寄存器/寻址方式,成为了许多 Vi 的初学者望而却步的一主要原因,特别是在某些系统版本的 Vi 中无法正常使用方向键移动光标的情况。那么好的习惯还是请试着用 h, j, k, l 来当方向键,对于键盘控来说,把手从字母上移动到方向键上去都是在浪费时间。

本来是想直接记录一下在 Vi 中怎么进行删除、修改操作的,然而却发现 Vi 的光标操作是无法逾越的一道沟。在这里,我会试着去理解每一个按键的更自然的意义,现在开始拉清单 阅读全文 >>

类别: Vim. 标签: . 阅读(48). 评论(0) »

Vim 中使用被选择文本以 Shell 命令执行

在 Vi 中如果想选取文本作为 Shell 命令来执行该如何做呢? 想法的背景是想在 Vi 中编辑 Shell 命令,主要是对参数的修改,然后直接选择执行,而不希望复制再贴到 Terminal 下看结果。方法其实很简单,用不着使用 VimShell,关键这个插件的安装还依赖于另两个插件。方法就是:

1. 可视模式选择文本,选择技巧, 按 v 逐字选择,j 从光标位置到行尾,最有用的莫过于大 V,以行为单位选择,所以按一下大 V 直接选中当前行
2. Shift+; 进到 :'<,'> 提示符
3. 输入 w !sh, 回车即可,要用 fish 就用  w !fish

效果

vi-selection-shell

原理:其实进行的是一个管道操作,把选择的文本内容输送给 sh 执行,相当于

echo "echo 'Hello world'" | sh

如果想把执行结果输出到文件或是剪贴板, 就可借题发挥下了,比如 阅读全文 >>

类别: Vim. 标签: , . 阅读(61). 评论(0) »

Vi 使用 Vundle 管理插件执行 PluginInstall 出错

Vi 有了 Vundle 这么一个总管(插件管理器),安装插件着实太省事了,再也不需要自己把 *.vim 文件放在各处。只需要做一次

$ git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

编辑好 ~/.vimrc 文件,装什么每次在这个文件中加上 Plugin 'scrooloose/nerdtree',运行 :PluginInstall 即可。

我第一次体验执行 vim +PluginInstall +qall (和在 Vi 中执行 :PluginInstall 同一效果), 总是得到类似这样的错误

Error detected while processing function vundle#installer#new..<SNR>46_process..vundle#installer#run..vundle#installe
r#install..<SNR>46_sync..<SNR>46_make_sync_command..<SNR>46_get_current_origin_url..<SNR>46_system:
line    1:
E484: Can't open file /var/folders/xz/vqv039517flcxtqzrq_jjy1xqzfzc0/T/v0rQ2fl/1
Error detected while processing function vundle#installer#new..<SNR>46_process..vundle#installer#run..vundle#installe
r#install..<SNR>46_sync: 阅读全文 >>

类别: Vim. 标签: , . 阅读(932). 评论(0) »

Vi Buffer 的基本操作

在 vi 中打开过多个文件时,每个文件都是存放在各自的 buffer  中,可以用命令 ls (buffers 或 files,三个命令中拣你最喜欢的一个即可,ls 输入方便,buffers/files 更表意) 显示所有的 buffer。显示出来的结果如下:

vi-list-buffers

可以看到

每个 Buffer  的编号,分别是 1, 4, 5, 6
% 表示的是当前窗口中的 Buffer
+ 表该 Buffer  中的内容有修改
Buffer 中的文件名称 阅读全文 >>

类别: Linux/Unix, Vim. 标签: , . 阅读(41). 评论(0) »

配置 Scala 的 vim 编辑环境

能在 Eclipse 或是 IDEA 中写 Scala 程序当然是不错的,但有时候还是有必要在更轻量级的文本编辑器中编辑,在 Unix 族系统中首推 vi。最主要就是要让 vi 支持 Scala 的语法高亮。

有现成的 vi 插件,https://github.com/scala/scala-dist/tree/master/tool-support/src/vim。下载下来三个目录 indent, syntax 和 ftdetect 及文件放在 ~/.vim 目录下.

然后到 vim 中命令 syntax on 打开语法高亮就能识别 *.scala 文件高亮显示 Scala 代码了。应该把 syn on 加到 vim 的初始化脚本  ~/.vimrc 文件中去。

更为自动的一点是有人把下载支持文件做成了一句语 bash 脚本 阅读全文 >>

类别: Scala, Vim. 标签: , . 阅读(532). 评论(0) »

vi 与 vim 的区别,及 vim 的语法加亮

之前每次终端连接到了 Linux/Unix 编辑文件,只知道用 vi,至于此时是 vi 还是 vim 就不得而知了,也不知如何去知。总以为 vi 就是 vim,vim 就是 vi,就没认真想过多出的 vim 是怎么回事。

据说:vi - visual editor, very inconvenient, or virtually incomprehensible, vim - VI IMproved,俨然是个 vi 的加强版。

只是经常会登录同是 Redhat AS 4 的两台机器,同样是用 vi 启动编辑器,一个能进行语法加亮,v 可进入可视模式,空行前的波浪号是蓝色的(下称机器A);另一个对于各种语法却是熟视无睹,v 无法进入可视模式,空行前的波浪号也是白色的(下称机器A)。这时才想起是否是 vi 与 vim  的区别,网上找来: 阅读全文 >>

类别: Linux/Unix, Vim. 标签: , , . 阅读(591). 评论(0) »
Page 1 of 212