进入visual模式
visual模式有三种characterwise-visual,linewise-visual和blockwise-visual。进入哪种visual模式需要根据情况选择
所有visual模式都可以使用hjkl进行选择区域
如果想退出visual模式按esc键,将切换回normal
characterwise-visual
进入characterwise-visual模式需要在normal模式下按v
这种visual有点类似于正常ide选择文本的样式,在这种模式下你可以一个一个字符选择区域,如果跳到下一行则此行所有字符都将被选择
linewise-visual
进入linewise-visual模式需要在normal模式下按V
这种visual无论光标在本行的哪一个位置都会选择这一行,可以用来快速选择行范围
blockwise-visual
进入linewise-visual模式需要在normal模式下按ctrl-v
这种visual可以选择一个区域块,可以进行列编辑,一般可以用来批量删除和添加内容
visual模式下的区域选择
除了用hjkl,还可以用normal的移动操作比如搜索字符跳转操作f,F,t,T,跳转行的操作{count}gg等
还有一种和operator-pending模式差不多的操作:
i)或i( 光标所在的一对括号里面的范围,不包含括号
a)或a( 光标所在的一对括号里面的范围,包含括号
i]或i[ 光标所在的一对方括号里面的范围,不包含方括号
a]或a[ 光标所在的一对方括号里面的范围,包含方括号
i}或i{ 光标所在的一对花括号里面的范围,不包含花括号
a}或a{ 光标所在的一对花括号里面的范围,包含花括号
i' 光标所在的一对单引号里面的范围,不包含单引号
a' 光标所在的一对单引号里面的范围,包含单引号
i" 光标所在的一对双引号里面的范围,不包含双引号
a" 光标所在的一对双引号里面的范围,包含双引号
iw 当前光标下的一个单词不包含单词后面的空格
aw 当前光标下的一个单词包含单词后面的空格
多次按i(可以进行嵌套括号的选择,同样的i[,i{,a(,a[,a{都可以进行嵌套选择
如果发现范围选错了,需要加几行区域上方的文本可以按o将光标跳转到区域第一行,并且区域也不会缩小
visual模式下的文本操作
像normal模式一样,也可以进行删除,复制,粘贴。不同的是由于你在visual模式下已经选择了操作区域就不需要指定{motion}了
d 删除区域内容
y 复制区域内容
p 将寄存器内容粘贴出来,并把已经选择区域的内容放进寄存器
P 将寄存器内容粘贴出来,抛弃选择区域的内容
如果你想指定操作哪个寄存器只需要在操作前写"x表示引用寄存器x
有关寄存器操作请看教学2
除了这些本人还喜欢用J操作,这可以把已经选择的行合并成一行,用空格隔开
在visual模式进入command-line模式
在visual模式下按:进入command-line模式,与normal模式进入command-line模式不同的是会自动将命令的{range}填充上
你可以先选定一个范围然后按:,会发现状态栏下面那行多了'<,'>,这就是visual模式选中的范围,其中'<表示选中的第一行
'>表示选中的末尾行。这样你可以先用visual模式选中范围,然后进行命令操作。
你也可以按!,此时再写一条shell指令,vim就会把选中范围的文本当作输入给shell命令,而shell命令的输出则重新替换回选中的
区域
有关normal模式下的command-line模式请看教学4
blockwise-visual模式下的特殊操作
你可以选中几行的某一列,然后按I进入insert模式,接下来进行正常编辑,编辑结束按esc,此时vim会在你选中的那几行的列进行同样的编辑
除了按I,也可以按A跳到右侧末尾进入insert模式
$ 将光标放到最后一列,哪怕选中的几行列数不一样也会选中到末尾
O (大写o)将光标在区域边缘左右切换,用于辅助选定范围
浙公网安备 33010602011771号