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 行gg或1G:移动到档案的第 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/#:#为命令的分隔符,\会被解析为关键词的一部分删除、粘贴与复制
x,X:在当前行中,x为向后删除一个字符,X为向前删除一个字符(n) x:连续向后删除 n 个字符(n) X:连续向前删除 n 个字符dd:删除当前行(n) dd:删除从当前行往下的n行(包括当前行)d1G或d gg:删除从当前行向上到第一行的所有数据dG:删除从当前行向下到最后一行的所有数据d$:删除当前行从光标所在处到行尾的所有字符d0:删除当前行从光标到行首的所有字符:reg查看当前寄存器的内容yy:复制当前行存储到"和0号寄存器()"+yy:复制当前行存储到+号寄存器(对应于系统粘贴板)"+p:粘贴系统粘贴板的内容(n) yy:复制往下多行y1G,yG,y0,y$:分别与d开头的组合键意义相对p,P:p为将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行
插入模式
- 切换到插入模式:
i,I:i从光标所在处插入,I从当前行第一个非空格符开始插入a,A:a从光标所在处的下一个字符处插入,A从当前行的行尾开始插入o,O:o从当前行的下一行插入新行,O从当前行的上一行处插入新行R: 进入取代模式,直到按下<Esc><Esc>或<Ctrl>+c:退出编辑模式 - 编辑过程:
<Alt>+i:光标向左移动一个字符
块选择模式
v:字符选择,将光标所经过的地方反白选择V:行选择<Ctrl>+v:区块选择y,d:对反白的地方进行复制或者删除
- 批量注释: 首先
<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 | set tags=tags; |
命令:[Ctrl] + ]:跳转[Ctrl] + T:回跳