我对Vim的世界相对较新。我一直在学习它,但尚未找到进入视觉模式的实际目的。
当视觉模式特别有用时,有哪些场景?
是否只能在可视模式下执行操作?
答案 0 :(得分:7)
当我想要突出显示一段文字时,我使用视觉模式。我首先在标准模式下键入 v ,然后启用可视模式。然后我用箭头键移动光标。这会导致我的起点和当前光标位置之间的文本突出显示。一旦选择了这样的文本部分,在命令模式下输入命令(例如搜索/替换)(通过键入:)将只影响所选区域。
另一个有用的视觉命令是 shift + v (视线)。这与上面相同,但它一次选择整行而不是单个字符。
答案 1 :(得分:4)
如果您想 评论一段文字 。
在命令模式下:
Shift + v
, ctrl + v ,
j 或 k ,
我,#(评论
字符)然后 Esc
Vim将注释字符插入 块的开始..
当我使用Gvim时,我发现 复制数据要容易得多
通过视觉模式到剪贴板
在命令模式下:
Shift + v
, j 或 k ,
“, +
, y
这里 + 是剪贴板 注册
对我来说,使用标记
适用于 手动缩进
Shift + v ,
Shift + > for
向右移动。
Shift + < for
向左移动。
重复
这很有趣:-)
答案 2 :(得分:3)
视觉模式的一个好处是,由于Vim专注于模态,你可以执行你习惯的大部分命令(例如用:s 搜索/替换, d 删除文本,或 r 替换文本),同时还能确切地看到将受到影响的内容 - 这可以让您确定正在进行的操作的确切范围。
此外,正如其他人提到的那样,您可以通过选择每行的第一个字符轻松插入前缀(如评论字符,或者说,&
用于对齐或在LaTeX中\item
) visual block 模式( ctrl + v ),按 I 在第一个字符前插入,输入任何你的内容想插入,然后 Esc 回到正常模式。
最后一种视觉模式是视线( Shift + v ),它允许您快速选择多行。从那里,您可以使用> 或< 更改缩进(使用数字前缀,以便通过那么多标签缩进),使用 d 或 y 删除或复制这些行,使用 zf 从这些行创建新的折叠,或使用任何其他基于选择的命令。
最后,你可以用视觉模式做很多其他很酷的事情,包括 gv 来重新选择你最后的视觉[line / block]模式选择, gU 将视觉选择转换为大写或将 gu 转换为小写等等。
答案 3 :(得分:2)
除了其他(好的)答案之外,这是一种定义动作范围的简单方法。例如,限制搜索&取代特定的方法...
说你有这段代码:
function foo() {
abc();
while (1) {
def();
abc();
}
}
您可以将光标放在任何大括号或括号上,然后按 v ,%,:, s / abc / xyz / g 和您的搜索& replace将具有定义的操作范围。
答案 4 :(得分:1)
如果要将命令应用于不容易描述为原始移动命令的文本部分,则可视模式很有用。您可以使用复杂的移动序列在可视模式下选择一些文本,然后将命令应用于该选择。
答案 5 :(得分:0)
我经常发现自己使用视觉块模式( Ctrl + v )比任何其他视觉模式更多。
一旦了解此模式,您就可以轻松删除缩进,注释等。根据我的经验,这通常比确定如何形成等效的搜索和删除语句更快。
你也可以通过选择一个文本块并按 I ,键入要添加的内容,然后按添加缩进(或者像Cherian所述的评论) > Esc (注意:您可能需要重绘屏幕(例如移动光标)以查看其效果)。
答案 6 :(得分:0)
我没有看到以下提到的内容,可能是因为它们很微妙。
每当您复制(粘贴)一些文本,然后想要 d 来更改其他文本,例如将diw
更改为“ delete inner word”时,Vim都会放置已删除的文本进入未命名的寄存器。然后,如果您尝试粘贴,它只会将删除的文本直接粘贴回去,除非您执行"0p
从0寄存器粘贴。
但是在visual
模式下,您可以执行类似viwp
的操作,而不必弄乱寄存器。
因此,为了进行比较,请在某些括号内进行复制和替换:
yiw
->移至某处-> vi(p
vs
yiw
->移动-> ci(<C-r>0p
yiw
->移动-> "_di(p
yiw
->移动-> di("0P
注意:这也适用于删除文本并将其粘贴回文本对象上。参见here。
如果要跳到文本对象的开头或结尾,可以在visual
模式下选择它,然后按 o 。 For example,va"
选择引号内的任何位置,然后按 o 跳到匹配的引号,类似于%表示匹配的括号。