vim帮助文档总结1-基础部分

vim文档简介(usr_01.txt)

vim文档由两部分:

  • 用户手册是基于任务的,从简单到复杂,以用户角度来写的,文件名以usr开头。例如usr_02.txt。
  • 参考手册则详细描述了vim的方方面面,文件名以单个主题为名,例如filetype.txt。

vim文档中包含了大量的链接可以跳转。这些链接包括:

  • 由竖条包裹起来的超链接(vim术语是标签)。
  • 由单引号包裹起来的选项,一般用来配置、定制化vim编辑器。
  • 由双引号包裹起来的命令

链接之间的跳转可以在普通模式下由下面命令完成:

  • CTRL-]跳转到超链接指定的文件段落。
  • CTRL-T跳回到超链接跳转前的位置。
  • CTRL-O跳回到上一次跳转前的位置。

vim命令行模式下的一些命令可以更好的查看帮助文档:

  • :set conceallevel查看conceallevel等级。
  • :set conceallevel=0设置vim使得超链接文字前后都由| 包裹着。
  • :set compatible?显示当前vim是否在兼容模式下运行,正常使用vim理应在非兼容模式下运行。
  • :scriptnames显示vim使用的配置文件列表。

vim模式简介
vim file.txt使用vim命令打开file.txt文件。
~在行首表示当前行不在文件中。
vim是个模态编辑器,意思是编辑器根据当前处于的不同模式,行为方式不同。
vim的模式一般有:正常模式,插入模式,命令模式,替换模式,可视化模式等。
:set showmode设置在vim最后一行显示当前模式。
模式切换:

  • 不管当前在任何模式下,按Esc键回到正常模式(有时候需要按两下才能回到正常模式)。
  • 正常模式下,按:键进入命令行模式,vim的最后一行会有-- INSERT --字样。
  • 正常模式下,按i键进入插入模式,vim的最后一行啥都没有,空空如也。
  • 正常模式下,按R键进入替换模式,vim的最后一行会有-- REPLACE --字样。
  • 正常模式下,按v键进入可视化模式,vim的最后一行会有-- VISUAL --字样。

常用命令(usr_02.txt)

h向左,j向下,k向上,l向右。
x删除当前字符,dd删除一行,J删除换行符,造成上下两行连接起来的效果。
u撤销上次编辑操作,U执行一个新的操作,该操作就是把当前行恢复到最后一批次修改操作之前的状态,但并不是撤销操作。CTRL-R重做上次被撤销的操作。
i从当前光标指定的字符之前的位置开始,进入插入模式,a从当前光标指定的字符之后的位置开始,进入插入模式,A从当前行的最后一个字符之后的位置开始,进入插入模式,o在下方另起一行,并进入插入模式,O在上方另起一行,并进入插入模式。
[#]<command>使用数字,在一个命令前加一个数目,表示重复该命令该数目次,例如9k3a!
ZZ保存当前所有的未保存的修改,并退出vim。
q!不保存当前所有的未保存的修改,并退出vim。

帮助简介
:help进入通用的帮助页面。
:help [subject]获取某些主题相关的帮助,例如:help x,:help deleting,:help index
帮助组合键命令,需要带CTRL-前缀,例如::help CTRL-A
帮助不同模式下的命令,需要带模式前缀,例如::help i_CTRL_H:help v_o:help c_%,正常模式下的命令不需要模式前缀。
帮助调试相关的命令,需要带>前缀,例如::help >cont
帮助外部命令,需要带:前缀,例如::help :s
帮助vim命令行参数,需要带-前缀,例如::help -t
帮助vim编辑器选项,需要用单引号,例如::help ‘number‘
帮助特殊键位,需要用尖括号,例如::help i_<Up>
帮助寄存器,需要带quote前缀,例如::help quote:
帮助vim出错信息,例如::help E37
帮助正则表达式符号,需要带/前缀,例如::help /\+
帮助可选功能,需要带+前缀,例如::help +conceal
帮助正则表达式:help pattern.txt
帮助vim脚本:help eval.txt
帮助案件映射:help map.txt
帮助命令定义:help command-<topic>,例如::help command-bar
帮助窗口处理:help windows.txt
帮助vim事件:help autocommand-events
CTRL-D可以在vim最后一行列出半截命令所有可能的选项,供参考。
<Tab>从第一个可能的选项开始,直接补全原半截命令。

移动(usr_03.txt)

w向后移动光标一个单词的长度,跳过单词间的空格,直接到下一个单词开始的位置。
b向前移动光标一个单词的长度,跳过单词间的空格,直到上一个单词开始的位置。
e向后移动光标一个单词的长度,直到该单词最后一个字符开始的位置。
ge向前移动光标一个单词的长度,直到前一个单词最后一个字符开始的位置。
WEB功能类似,只是认为由空白字符组成的字符串才是单词。
[#]motion重复移动指定数目的次数。
$移动光标到当前行最后一个字符开始位置,[#]$移动到当前行之后,指定数目行的行尾,#从1开始表示当前行。
^移动光标到当前行第一个非空白字符开始位置。
0移动光标到当前行第一个字符开始位置。
#G跳转到指定行,如果不指定#,则跳转到当前文件末尾。
gg跳转到当前文件开头。
#%按百分比跳转。
H当前屏幕所显示的内容不变,只移动光标到第一行。
L当前屏幕所显示的内容不变,移动到最后一行。
M当前屏幕所显示的内容不变,移动到中间行。
CTRL+G显示当前文件名,当前文件行数,光标所在行号、列号以及占全文的百分比;有时候列号会写成2-9表示第二个字符,第九列(第一个字符是个制表键)。
:set number在vim每一行前都显示行号,:set ruler在vim最后一行显示列号和列号。
在选项名字前加上no即表示取消该选项,例如::set nonumber不显示行号。

翻屏

  • CTRL-F向下翻一屏幕的文本
  • CTRL-B向上翻一屏幕的文本
  • CTRL-D向下翻半屏
  • CTRL-U向上翻半屏
  • CTRL-E向上翻一行
  • CTRL-Y向下翻一行
  • zz翻屏,直到当前行处在屏幕*
  • zt处在第一行
  • zb处在最后一行

搜索

f<Char>向后搜索指定字符,只搜索当前行,光标停在指定字符的开始位置。
t<Char>向后搜索指定字符,只搜索当前行,光标停在指定字符的前一个字符的开始位置。
FT功能类似,只是方向是向前搜索;[#]<f|F|t|T><Char>指定搜索第几个字符。
%搜索当前行当前光标位置开始第一个括号,及其匹配的括号;括号默认只包括三种:大括号{}、中括号[]和小括号();不同版本的vim支持的括号种类不一定相同。
/<Str>从光标位置开始,往后搜索字符串;搜索后n跳转到下一个匹配点,N跳转到上一个匹配点;按/之后,通过上下键可补全历史搜索命令;搜索字符串<Str>\<表示单词开始的地方,\>表示单词结束的地方。
?类似/,只是方向上是从光标处往前搜索。
*单词匹配,从光标位置开始,向后搜索光标位置所在的单词;g*文本匹配。
#*,只是方向是从光标位置开始往前。
[#][g]<*|#>搜索并跳转到第#次出现的位置。
搜索选项:

  • ignorecase设置vim搜索时,忽略大小写
  • hlsearch设置vim搜索时,高亮显示被搜索到的文本
  • incsearch设置vim搜索时,敲击回车键前高亮显示搜索结果
  • wrapscan设置vim搜索时,如果搜索到文件末尾了,接着从文件头开始继续搜索

正则表达式
^表示一行开始,$表示一行结尾,.表示任意一个字符。
特殊字符需要加\前缀来转义,例如:\.\*;特殊字符有:.*[]^%/\?~$(数字键2790以外的数字键)。

跳转

一般来说,只要一个命令就能把光标位置移动超过一行,这种行为就是跳转;这包括搜索命令(不论搜索并跳转的位置是否超出本行);
vim会默认记录跳转的地方作为标记点(mark),这是无名有序号的标记点;vim还可以记录命名的标记点。
有些命令可以在标记点之间跳转:

  • ``(两个反引号,backtick,1键左边的的键位)在相邻两个标记点之间来回跳转
  • CTRL-O跳转到更早的标记点
  • CTRL-I跳转到更新的标记点,同<Tab>
  • :jumps列出跳转过的位置,上一次跳转的地方>标记出来
  • m[a-z]在当前位置记录一个命名标记点
  • `a跳转到名字为a的标记点处
  • ‘a(单引号)跳转到名字为a的标记点所在行的第一个非空白字符处
  • :marks列出所有的命名标记点

修改文本(usr_04.txt)

文本修改有三种基本方式:操作符-移动方式,可视化方式,和文本对象方式。

操作符-移动

d<motion>删除motion范围内的字符。
c<motion>删除motion范围内的字符,同时进入插入模式。(cw是个例外,因为是老vi遗留下的常用命令,所以这个命令不会删除最后的那个空白字符;dw会删除最后那个空白字符)
[#]<d|c>[#]<motion>例如:3d2w山删除6个单词,意思是一次删除2个单词,但是删3次。
cc删除整行,并进入插入模式,但是前置空白字符会保留。
有些操作符过于常用,所以vim专门给他们整一个单字符来表示:

  • xdl
  • Xdh
  • Dd$
  • Cc$
  • scl
  • Scc

r一次性替换字符,但是模式仍保留为正常模式[#]r<Char>从当前光标开始#个数的字符替换成Char。例如:3rn将当前光标开始的三个字符替换成n
.重复上一次文本的修改命令;例如:先/four寻找单词four,再cwfive<Esc>替换fourfive,再n寻找下一个four,再.替换一下,再n寻找一下,再.替换一下。

可视化

v进入可视化模式,然后用motion选择范围;按o将光标切换到水平方向另一头;用d删除选中的文本,同时回到正常模式
V进入按行可视化模式,当前行立刻被选中,只有用motion移动超出本行之后,才会改变选择的文本范围;按o将光标切换到垂直方向另一头。
CTRL+V进入按块可视化模式,用motion改变选择范围,但最终只能选中一个长方形范围的文本;按o将光标切换到对角线另一头;按O将光标切换到水平方向另一头。

复制粘贴

p把刚拷贝或删除的文本粘贴进来,如果之前拷贝删除的是一行或几行,则粘贴到光标所在行的下一行,如果之前拷贝删除的只是个字符串,则粘贴到光标所在字符之后。
P功能同p只是粘贴方向是相反的。
xp可以迅速替换两个手误打出来的字符,例如:teh.
y复制文本;y[#]<motion>按照#次motion的距离,拷贝跨过的文本。例如:y2w拷贝两个单词。
yyY一样,拷贝一整行。
"*剪贴板操作"*yy将当前行的内容复制到剪贴板里,"*p将剪贴板里的文本粘贴到当前光标处。
文本对象:

文本对象

iw当前光标位置所在的一个单词,不包括空格;aw当前光标位置所在的一个单词,包括空格。例如:daw删除当前光标位置所在的一个单词。
is当前光标位置所在的一句话不包括句号后的空格;as当前光标位置所在的一句话,包括句号后的空格。例如:cis删除当前光标位置所在的一句话,并进入插入模式

其他

R进入替换模式,每输入一个字符,就会替换当前光标下对应的一个字符,直到按Esc结束;r只替换一个字符。
~将当前光标下的字符变为大写,并移动到下一个字符。
I将光标移动到当前行第一个非空白字符处,并进入插入模式
A将光标移动到当前行行尾,并进入插入模式

vim帮助文档总结1-基础部分

上一篇:linux 安装GCC6和glibc2.9


下一篇:Windows Phone开发(42):缓动动画