在Vim中更改文本矩形
在中,可以使用在Vim中更改文本矩形,vim,insert,block,Vim,Insert,Block,在中,可以使用I命令一次在多行中插入文本,如中所示。然而,这只适用于真正的插入。如果我想同时删除一些字符,这是行不通的 例如,我想要改变 000 one 000 two 000 three 000 four 到 为此,我会调用^v3gglx从前三行中删除000,然后^V3ggI111^[将111插入相同的位置,这对我来说很尴尬。 (上面的意思是,进入视觉分块模式,标记前三行中的所有零并将其删除。然后再次进入视觉分块模式,标记前三行的开始,进入多行插入模式,插入111并使用Esc退出。) 一定有
I
命令一次在多行中插入文本,如中所示。然而,这只适用于真正的插入。如果我想同时删除一些字符,这是行不通的
例如,我想要改变
000 one
000 two
000 three
000 four
到
为此,我会调用^v3gglx
从前三行中删除000,然后^V3ggI111^[
将111插入相同的位置,这对我来说很尴尬。
(上面的意思是,进入视觉分块模式,标记前三行中的所有零并将其删除。然后再次进入视觉分块模式,标记前三行的开始,进入多行插入模式,插入111并使用Esc退出。)
一定有更好的方法可以做到这一点。最烦人的是,我必须在删除零后再次选择区域。如果删除后仍然选择该区域,则可以。如果可以在多插入模式下删除字符,也可以。但如果我尝试此操作,则只会更改第一行 重新选择是简单而快速的
gv
;然后您可以使用I111^[
插入新文本。但是,正如@melpomene的回答所示,这实际上是不必要的
(但我想我会提到它,这样你就可以在其他情况下应用这一新知识。)重新选择是简单而快速的
gv
;然后你可以使用I111^[
插入新文本。但是,正如@melpomene的回答所示,这实际上是没有必要的
(但我想我会提到它,以便您可以在其他情况下应用此新知识。)或者,由于您要替换为同一个字符,您可以在选择以下内容后使用
r
:
^V2jer1
这样做的好处是完全避免了插入模式
顺便说一句,
3G
完成了与3gg
相同的任务。另外,由于您要替换为相同的字符,您可以在选择以下内容后使用r
:
^V2jer1
这样做的好处是完全避免了插入模式
顺便说一句,
3G
完成了与3gg
相同的任务,一旦您选择了0
s列,用1
s替换它们就像点击r1
一样简单:
<C-v>2jer111
一旦选择了
0
s列,用1
s替换它们就像点击r1
一样简单:
<C-v>2jer111
使用
^A
的有趣方法,但请注意,如果nrformats
包括octall
(默认情况下是这样的),Vim将000
解释为八进制,而000
上的111^A
导致0157
,73^A
将给出0111
,但仍然是前导零。我总是忘记我的设置不是每个人的设置;-^A
的有趣方法,但请注意,如果格式
包括desoctall
(默认情况下会这样做),Vim将000
解释为八进制,而000
上的111^A
结果为0157
,73^A
将给出0111
,但仍有一个前导零。我总是忘记我的设置不是每个人的设置;-)多亏了大家。这个特定问题的最佳答案当然是melpomenes,但其他答案也提供了其他非常有用的提示。谢谢大家。这个特定问题的最佳答案当然是melpomenes,但其他答案也提供了其他非常有用的提示。
V2j:norm 111<C-a>