- 无插件零配置操作
- 常用配置
- 常用插件
- nerdtree(opens new window)">nerdtree(opens new window)
- ctrlp.vim(opens new window)">ctrlp.vim(opens new window)
- #ag.vim(opens new window)">#ag.vim(opens new window)
- vim-commentary(opens new window)">vim-commentary(opens new window)
- vim-fugitive(opens new window)">vim-fugitive(opens new window)
- syntastic(opens new window)">syntastic(opens new window)
- emmet-vim(opens new window)">emmet-vim(opens new window)
- delimitMate(opens new window)">delimitMate(opens new window)
- goyo(opens new window)">goyo(opens new window)
- vim-colors-solarized(opens new window)">vim-colors-solarized(opens new window)
以下是我在使用 vim 过程中每天都会使用无数次的高频操作
:w快速保存<C-[>退出 insert 模式,与esc类似0快速移动到行首gg快速移动到文件首G快速移动至文件尾<c-o>移动至最近一次位置zz把光标移动至本屏中间:12快速移动至特定行dd剪切本行yy复制本行yi{复制括号中内容=i{自动缩进<c-p>自动补全"*yy复制到系统剪切板*快速查找关键字,类似于sublime/vscode 的Command + d:noh取消关键字高亮o快速进入 insert 模式,并定位到下一行-
无插件零配置操作
快速移动
快速移动是 vim 的重中之重,比一切插件都要重要。也是下编辑和修改的基础。
上(k)下(j)左(h)右(l) 移动,需要注意,禁止使用上下左右箭头
如果需要移动数行,可以在操作前加数字。如10j代表往下移动十行。 通过数字与操作结合,这是 vim 的思想。减少上一步的左右移动,效率太低,使用
b, B, w, W代替b指 back a word,退回一个单词。w指 forward a word,前进一个单词。B指 back a WORD,退回一个大单词。w指 forward a WORD,前进一个大单词。其中,word 以及 WORD 的区别,以一个示例说明。 hello.world 有三个 word (‘hello’, ‘.’, ‘world’),却只有一个 WORD。
使用
f, F, t, T进行更为精细的左右移动控制f指 find a character,快速移动到下一个字符的位置,F指向前查找。结合b, w实现快速左右移动。t指 tail a character,快速移动到下一个字符位置的前一个字符,T指向前查找。- 使用
0, $进行行首行尾移动 - 使用
%快速移动到配对字符
如从左括号快速移动到右括号,左引号快速移动到右引号,在编码中最为常用! 使用
<Ctrl-d>,<Ctrl-u>进行大范围上下移动<Ctrl-d>往下移动半页,<Ctrl-u>往上移动半页。也可以使用
<Ctrl-f>, <Ctrl-b>进行整页移动。使用
gg, G进行首行尾行移动:128表示快速定位到 128 行,目前只在 debug 中使用zz快速定位当前光标至当前屏幕中间,zb定位当前光标至屏尾,zt定位当前光标至屏首*定位当前光标下的单词,并指向下一个,#指向上一个gd在编码中常用,定位当前变量的申明位置,gf定位到当前路径所指向的文件。最后如果你发现定位错了,可以使用
<Ctrl>-o回到光标的上一位置
编辑
vim 的编辑在
Insert Mode,以上的快速移动是在Normal Mode。编辑文本需要首先进入Insert Mode。i, I, a, A, o, O进入Insert Mode。i指 insert text,在该光标前进行编辑,I指在行首进行编辑。a指 append text,在该光标后进行编辑,A指在行尾进行编辑。o指 append text,在该光标后一行进行编辑,O指在光标前一行进行编辑。
个人习惯,i, A, o, O用的多一些,I, a基本不用。Esc以及<Ctrl-[>都可以退出Insert Mode。
个人习惯使用<Ctrl-[>,一来Esc过远,二来在一些编辑器中Esc容易与其它热键冲突。修改
删除也可以在
Insert Mode使用delete键进行手动删除,不过效率太低,建议一般在Normal Mode进行删除,刚进入 vim 的状态便是Normal Mode。使用
x(dl)删除特定字符
可以结合x以及上述所讲的快速移动,删掉光标下的特定字符
在括号里标注l,意指x为dl的简写。d指delete,表示删除,是所有修改操作的基础。dl由d和l两个操作组成,代表删掉光标右侧的字符,同理,dh代表删掉光标左侧的字符,这是所有删除的基本形式,也是 vim 的核心思想。- 使用
daw删除特定单词daw指delete a word,表示删除特定单词。同样也可以使用db, dw来删除单词。 - 使用
dt, df加特定字符,删掉字符前的文本 - 使用
di(, da(删除特定符号内的文本,如删除括号,引号中的文本di(指delete in (,不会删掉括号。da(指delete a (,会连同括号一同删掉。同理还有di',di"等,在编码中最为常用! - 使用
D (d$)删除掉该字符以后的所有文本 - 使用
dd删掉整行 - 把以上操作的所有 d 替换为 c,表示删除后进入编辑模式
c指change,表示删除,如d一样,是 vim 的基本动词 -
#文件以及多窗口
使用
:Ex (Explore)浏览目录
定位到文件所在行,回车进入指定文件- 使用
:ls列出缓冲列表
缓冲列表中保存最近使用文件,行头有标号 - 使用
:bn进入最近使用文件bn指buffer next,进入缓冲列表的下个缓冲,即最近一次使用文件 - 使用
:b[N]进入缓冲列表中标号为 N 的文件b 10指buffer 10,进入缓冲列表,即最近一次使用文件 - 使用
:sbn, :vbn在新窗口打开最近使用文件s指split,水平方向。v指vertical,垂直方向。 -
基本操作
基本操作指查找,替换,撤销,重做,复制,粘贴,保存等
/{pattern}查找/后加需要查找的词或者正则表达式进行查询,n向下查询,N向上查询。:s/aa/bb/g替换s指substitute的缩写,替换,g代表全局替换。u撤销u指undo的缩写,撤销。可与数字结合进行多次撤销。<Ctrl-r>重做yy复制整行y指yank,复制。使y与快速移动结合起来,可以使用多种情况的复制,如复制括号中内容,复制引号中内容。
复制时,会把当前内容置入寄存器,使用:reg查看寄存器列表。p粘贴p指paste,粘贴。"*y复制内容至系统剪切板:reg会列出寄存器列表,"*寄存器代表系统剪切板(),所以以上就是把内容放到系统剪切板。
如果寄存器列表中没有该寄存器,则 vim 不支持系统剪切板,也可以使用命令vim --version | grep clipboard。-
常用配置
1tab == 2space
set expandtabset smarttabset shiftwidth=2set tabstop=2
保留操作记录
当关闭文件并再次进入时,可以使用
u进行撤销动作set undofileset undodir=~/.vim-config/undo_dirs
不生成交换文件
" 不产生交换文件(当打开一个文件未正常关闭时会产生交换文件)set noswapfile
常用插件
以下是在 我的vim配置 (opens new window)中所使用的插件,关于快捷键有可能经过我自定义。
nerdtree(opens new window)

文件管理器 ,nn切换文件管理器窗口,类似于sublime的Command + k + b,nf定位当前文件的位置
在文件管理窗口
ma新建文件或文件夹md删除文件或文件夹-
ctrlp.vim(opens new window)

ctrlp,类似于sublime的ctrlp <c-p>在当前项目下查找文件,b在buffer中查找文件,f在最近打开文件中查找
在ctrlp窗口中,<c-j> 和 <c-k> 控制上下移动。
#ag.vim(opens new window)

查找关键字,类似于sublime的 Command + Shift + f
Ag key *.js在特定文件下查找关键字
注:首先需要安装 the_silver_searcher(opens new window)
vim-commentary(opens new window)
注释命令
-
vim-fugitive(opens new window)

git扩展 :Gblame查看当前行的归属:Gdiff查看与工作区文件的差异:Gread相当于git checkout -- file-
syntastic(opens new window)
语法检查插件,设置eslint
:SyntasticCheck语法检查,默认会在保存时进行语法检查,不过会有卡顿:lne[xt]下一处语法错误:lp[revious]上一处语法错误-
emmet-vim(opens new window)
-
delimitMate(opens new window)
goyo(opens new window)

-
vim-colors-solarized(opens new window)

可更改配置文件中 background 为dark和light切换主题
