vim 高频操做以及经常使用插件

当你有一个服务器,或者运维若干服务器时,没有什么比不够熟练 vim 更让人难受和窝心的事情了。而在各类编辑器中 vim 模式也大受欢迎。所以,学习 vim 是颇有必要的。linux

本章节没有关于服务器中的实践内容,只是须要简单操做以及熟练使用 vim。git

本章旨在如何快速的上手 vim,主要体如今如下三个方面程序员

  1. 无插件零配置时如何灵活使用 (即各类编辑器的 vim mode)
  2. 了解经常使用的配置
  3. 介绍一些经常使用的插件

掌握了vim 无插件零配置的操做,也能大大提升程序员在各类编辑器中敲代码的效率。github

了解了 vim 经常使用的配置,你将把 vim 用的很舒服,如沐春风。正则表达式

了解了经常使用插件,你将能够把它打形成一个适合本身的 IDE 工具。但每每来讲,它对于服务器运维好处有限,对敲代码的程序员,每每也不如一个专用语言的 IDE 工具强大。不过,它有一个最大的好处,就是能够知足马斯洛需求层次理论中的自我需求: 装逼。这也是我会使用它的缘由。编程

高频操做

如下是我在使用 vim 过程当中天天都会使用无数次的高频操做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 模式,并定位到下一行
  • u 撤销

无插件零配置操做

快速移动

快速移动是 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> 往上移动半页。app

    也可使用 <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,意指 xdl 的简写。

    ddelete,表示删除,是全部修改操做的基础。dldl 两个操做组成,表明删掉光标右侧的字符,同理,dh 表明删掉光标左侧的字符,这是全部删除的基本形式,也是 vim 的核心思想。

  • 使用 daw 删除特定单词

    dawdelete a word,表示删除特定单词。一样也可使用 db, dw 来删除单词。

  • 使用 dt, df 加特定字符,删掉字符前的文本
  • 使用 di(, da( 删除特定符号内的文本,如删除括号,引号中的文本

    di(delete in (,不会删掉括号。da(delete a (,会连同括号一同删掉。同理还有 di'di" 等,在编码中最为经常使用!

  • 使用 D (d$) 删除掉该字符之后的全部文本
  • 使用 dd 删掉整行
  • 把以上操做的全部 d 替换为 c,表示删除后进入编辑模式

    cchange,表示删除,如 d 同样,是 vim 的基本动词

  • 使用 r 加特定字符,表示使用特定字符代替原有字符

文件以及多窗口

  • 使用 :Ex (Explore) 浏览目录

    定位到文件所在行,回车进入指定文件

  • 使用 :ls 列出缓冲列表

    缓冲列表中保存最近使用文件,行头有标号

  • 使用 :bn 进入最近使用文件

    bnbuffer next,进入缓冲列表的下个缓冲,即最近一次使用文件

  • 使用 :b[N] 进入缓冲列表中标号为 N 的文件

    b 10buffer 10,进入缓冲列表,即最近一次使用文件

  • 使用 :sbn, :vbn 在新窗口打开最近使用文件

    ssplit,水平方向。
    vvertical,垂直方向。

  • 使用 :on(ly) 只保留当前窗口

基本操做

基本操做指查找,替换,撤销,重作,复制,粘贴,保存等

  • /{pattern} 查找
    / 后加须要查找的词或者正则表达式进行查询,n 向下查询,N 向上查询。
  • :s/aa/bb/g 替换
    ssubstitute 的缩写,替换,g 表明全局替换。
  • u 撤销
    uundo 的缩写,撤销。可与数字结合进行屡次撤销。
  • <Ctrl-r> 重作
  • yy 复制整行
    yyank,复制。使 y 与快速移动结合起来,可使用多种状况的复制,如复制括号中内容,复制引号中内容。

    复制时,会把当前内容置入寄存器,使用 :reg 查看寄存器列表。

  • p 粘贴
    ppaste,粘贴。
  • "*y 复制内容至系统剪切板

    :reg 会列出寄存器列表,"* 寄存器表明系统剪切板(),因此以上就是把内容放到系统剪切板。

    若是寄存器列表中没有该寄存器,则 vim 不支持系统剪切板,也可使用命令 vim --version | grep clipboard

  • "*p 粘贴系统剪切板中内容

vim 配置

1tab == 2space

set expandtab
set smarttab
set shiftwidth=2
set tabstop=2

保留操做记录

当关闭文件并再次进入时,可使用 u 进行撤销动做

set undofile
set undodir=~/.vim-config/undo_dirs

不生成交换文件

" 不产生交换文件(当打开一个文件未正常关闭时会产生交换文件)
set noswapfile

插件

如下是在 个人vim配置 中所使用的插件,关于快捷键有可能通过我自定义。

nerdtree

文件管理器

  • ,nn 切换文件管理器窗口,相似于sublime的 Command + k + b
  • ,nf 定位当前文件的位置

在文件管理窗口

  • ma 新建文件或文件夹
  • md 删除文件或文件夹
  • I 切换隐藏文件显示状态

ctrlp.vim

ctrlp,相似于sublime的ctrlp

  • <c-p> 在当前项目下查找文件
  • ,b 在buffer中查找文件
  • ,f 在最近打开文件中查找

在ctrlp窗口中,<c-j><c-k> 控制上下移动。

ag.vim

查找关键字,相似于sublime的 Command + Shift + f

  • Ag key *.js 在特定文件下查找关键字

注:首先须要安装 the_silver_searcher

vim-commentary

注释命令

  • :gcc 注释当前行,相似于sublime的 <c-/>

vim-fugitive

git扩展

  • :Gblame 查看当前行的归属
  • :Gdiff 查看与工做区文件的差别
  • :Gread 至关于 git checkout -- file
  • :Gwrite 至关于 git add file

syntastic

语法检查插件,设置eslint

  • :SyntasticCheck 语法检查,默认会在保存时进行语法检查,不过会有卡顿
  • :lne[xt] 下一处语法错误
  • :lp[revious] 上一处语法错误
  • :! eslint %:p --fix 自动修正错误

emmet-vim

  • <c-y>, 相似于sublime的 <c-e>

delimitMate

括号,引号自动补全

goyo

  • :Goyo 切换至 gotyo 模式

vim-colors-solarized

可更改配置文件中 background 为 darklight 切换主题

小结

经过本章你能够很熟练地在服务器中使用 vim 编辑文本,若是有必要的话还能够在 linux 中使用 vim 进行编程。可是在服务器中除了须要熟练地使用 vim 外,更须要应付多窗口管理,能够参考下一章 tmux 与多窗口管理


欢迎关注公众号山月行,我会按期分享一些先后端以及运维的文章,而且会有技术与生活上的每日回顾与总结,欢迎关注交流

欢迎关注公众号山月行,在这里记录个人技术成长,欢迎交流

相关文章
相关标签/搜索