zxc-cppnb

导航

 

进入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)将光标在区域边缘左右切换,用于辅助选定范围

posted on 2025-09-26 13:21  Cpp_Nb  阅读(25)  评论(0)    收藏  举报