vim配置及命令手册

概述

  vim是著名编辑器vi的变种,相比vi而言,提供了更多扩展,包括插件结构等。vim可以打造成IDE前端,但在Unix/Linux环境中,标准的IDE并不是开发人员的首选;而可以灵活整合各种语言和工具的vim与emacs则是Unix/Linux下开发人员的主要选择。
  下文中的快捷键都可以重新绑定,但默认的绑定设置大部分都是最方便的选择,遵循传统可以有利于协作开发。
  下文中快捷键中带+号的组合键代表同时按下,不带+号的顺序按下。组合键有些会用空格分隔,这样做是为了使得描述更清晰直接,此时空格并不是组合键的一部分;如果有些快捷键中包含空格,下文会以<Space>来表示。另外,(n)表示实际的按键是整数数字,而不是字母n

一般模式

  • 光标移动:

    h<Left> :向左移动一个字符
    j<Down> :向下移动一行
    k<Up> :向上移动一行
    l<Right> :向右移动一个字符
    (n) <方向键>:(顺序按下)多字符(行)移动
    (n) <Space> :光标向右移动n个字符
    (n) <Enter> :向下移动 n 行
    0<Home>:移动到行首
    $<End>:移动到行尾
    <Ctrl> + f:屏幕向下移动一页,相当于<Page Down>
    <Ctrl> + b:屏幕向上移动一页,相当于<Page Up>
    <Ctrl> + d:屏幕向下移动半页 +o:屏幕向上移动半页
    <CTRL> + O:调整到上一次光标所在的行号上,即往后跳转
    <CTRL> + i:调整到jump list中当前记录的下一个记录的行号上,即往前调整
    (n) <Space> :光标向右移动n个字符
    H:移动到屏幕最上方行的行首
    M:移动到屏幕中央行的行首
    L:移动到屏幕最下方行的行首
    G:移动到文档的最后一行
    (n) G:移动到文档的第 n 行
    gg1G:移动到档案的第 1 行

  • 搜寻与替代:

    /word : 向光标之下搜寻匹配 word 的字符串
    ? word: 向光标之上搜寻匹配 word 的字符串
    n:在上次的搜寻结果中跳到下一个匹配的字符串
    N:在上次的搜寻结果中跳到前一个匹配的字符串,与n相反
    :[n1],[n2]s/word1/word2/[g][c]:替换从n1行到n2行之间所有行的第一个word1匹配为word2(如果替换命令的最后部分选择 g,则替换该行所有的匹配),如果没有指定n1,n2,则作用于当前行,如果n2为$,则代表最后一行。
    :%s/word1/word2/[g][c]:对每一行的word1匹配进行替换
    :s#word1/#word2/##为命令的分隔符,\会被解析为关键词的一部分

  • 删除、粘贴与复制

    xX:在当前行中,x为向后删除一个字符,X为向前删除一个字符
    (n) x:连续向后删除 n 个字符
    (n) X:连续向前删除 n 个字符
    dd:删除当前行
    (n) dd:删除从当前行往下的n行(包括当前行)
    d1Gd gg:删除从当前行向上到第一行的所有数据
    dG:删除从当前行向下到最后一行的所有数据
    d$:删除当前行从光标所在处到行尾的所有字符
    d0:删除当前行从光标到行首的所有字符
    :reg 查看当前寄存器的内容
    yy:复制当前行存储到"0号寄存器()
    "+yy复制当前行存储到+号寄存器(对应于系统粘贴板)
    "+p粘贴系统粘贴板的内容
    (n) yy:复制往下多行
    y1GyGy0y$:分别与d开头的组合键意义相对
    pPp为将reg "reg 0的数据复制到当前行的下一行,而P则复制到当前行的上一行
    J:将当前行与下一行连接为一行
    u:递归撤回前一个动作
    <Ctrl>+r:与u相反,重新执行前一个动作
    .:重新执行前一个动作

  • 指令列
    :w :写入
    :w!:强制写入
    :q:退出
    :q!:强制退出,不保存
    :wq:保存后退出
    ZZ:若文档没有修改,则不保存退出,否则,保存后退出
    :w [filename]:另存为其他文件
    :n1,n2 w [filename]:将n1行到n2行之间的所有内容写入到另一个文件中
    :r [filename]:从当前行的下一行处插入另一个文件的内容
    :! (Command):执行shell命令

  • 格式化:

    gg=G:全文格式化
    (n)g=(m)G:格式化第n行到第m行

插入模式

  • 切换到插入模式
    iIi从光标所在处插入,I从当前行第一个非空格符开始插入
    aAa从光标所在处的下一个字符处插入,A从当前行的行尾开始插入
    oOo从当前行的下一行插入新行,O从当前行的上一行处插入新行
    R: 进入取代模式,直到按下<Esc>
    <Esc><Ctrl>+c:退出编辑模式
  • 编辑过程
    <Alt> + i:光标向左移动一个字符

块选择模式

v:字符选择,将光标所经过的地方反白选择
V:行选择
<Ctrl>+v:区块选择
yd:对反白的地方进行复制或者删除

  • 批量注释: 首先<Ctrl>+v进入区块选择模式,然后移动光标选择要注释的行,再按I进入行首插入模式,输入注释符,完成后按<Esc>退出。

多窗口模式

:sp [filename]:水平开启新窗口
:vsp [filename]:垂直开启新窗口
[Ctrl]+w j :切换窗口
[Ctrl]+w k :切换窗口

多档案编辑

:n: 切换到下一个文档
:N:切换到上一个文档
:buffers:查看当前打开buffer
:badd [filename]:打开新文件到buffer
:bdelete:删除buffer,关闭打开文件
:bnext:切换到下一个buffer

tags

配置:

1
2
set tags=tags;
set autochdir

命令:
[Ctrl] + ]:跳转
[Ctrl] + T:回跳