在Unix中,^允许你重复一个命令,用一些文本代替新文本。例如:
^
csh% grep "stuff" file1 >> Results grep "stuff" file1 csh% ^file1^file2^ grep "stuff" file2 csh%
有Vim的等价物吗?有很多次我发现自己在命令行上一遍又一遍地编辑次要的东西。
tag5nh1u1#
特别针对替代品:使用&在正常模式下对当前行重复上次替换。要对所有行重复,请键入:%&
&
:%&
rjee0c152#
q:以进入命令行窗口(:help cmdwin)。可以在此窗口中编辑和重用以前输入的前样式命令。
q:
:help cmdwin
wkftcu5l3#
一旦你点击:,你可以输入几个字符和向上箭头,它将字符匹配你输入的内容。例如,输入:set,它将通过你的“集”爬回来。这也适用于搜索-只需输入/和向上箭头。和/abc向上箭头将提供你匹配搜索字符串逆时间顺序。
:
:set
/
/abc
relj7zay4#
有两种方法。1.您只需按下.键就可以精确地重播最后一个命令(而不是移动)。例如,我键入cw然后hello将一个单词改为“hello”。将光标移到另一个单词后,我按下.再次这样做。1.对于更高级的命令,如替换,在执行替换后,只需点击:键,然后再按↑向上箭头键,它会用相同的命令填充命令行。
hello
0tdrvxhp5#
若要在所有行上使用相同的标志重复前面的替换,可以使用Mapg&。
g&
nhn9ugyo6#
如果您已在正常模式:s/A/B/g(当前行)或可视模式:'<,>'s/A/B/g(当前选择中包含的行)下进行了替换,并且想要重复上次替换,则可以:
:s/A/B/g
:'<,>'s/A/B/g
<CR>
:&
:'<,'>&
由于我对Vim的了解有限,这解决了几个问题:首先,最后一个可视替换:'<,'>s/A/B/g可以作为最后一个命令使用(:-<UP>)从正常模式和视觉模式,但是总是产生来自正常模式的误差。(它仍然引用视觉模式中的最后一个选择--而不是像我假设的那样引用光标处的空选择--并且我的示例替换在一次遍历中耗尽了所有匹配。)同时,最后一个普通模式替换以:s开始,而不是以:'<,'>s开始,因此您需要修改它以便在可视模式中使用。最后,&可以直接从普通模式中获得,因此它可以接受重复和其他选择,比如接下来两行的2&,正如用户ruohola所说,g&表示整个文件。在这两个版本中,按:然后按&的效果就像您按了:然后重新键入了s/A/B/一样,因此您上次所处的模式是不相关的,只有当前光标行或所选内容才能确定该行(s)受影响。(请注意,像g这样的尾随标志也会被清除,但在此语法中也是下一个标志,如:&g/: '<,'>&g。在我看来,这是一个好坏参半的问题,因为您可以/必须在此处重新指定标志,而独立的&似乎根本不接受标志。我一定遗漏了什么。)我欢迎大家提出建议和修改意见。这些意见大部分来自于刚刚的实验,所以我相信还有更多的东西要做,但希望它们能有所帮助。
:'<,'>s/A/B/g
<UP>
:s
:'<,'>s
2&
s/A/B/
g
:&g
: '<,'>&g
xcitsw887#
看看这个:http://vim.wikia.com/wiki/Using_command-line_history以获取解释。
pgx2nnw88#
您可以键入@:以重复上一个命令。
@:
8条答案
按热度按时间tag5nh1u1#
特别针对替代品:使用
&
在正常模式下对当前行重复上次替换。要对所有行重复,请键入
:%&
rjee0c152#
q:
以进入命令行窗口(:help cmdwin
)。可以在此窗口中编辑和重用以前输入的前样式命令。
wkftcu5l3#
一旦你点击
:
,你可以输入几个字符和向上箭头,它将字符匹配你输入的内容。例如,输入:set
,它将通过你的“集”爬回来。这也适用于搜索-只需输入/
和向上箭头。和/abc
向上箭头将提供你匹配搜索字符串逆时间顺序。relj7zay4#
有两种方法。
1.您只需按下.键就可以精确地重播最后一个命令(而不是移动)。例如,我键入cw然后
hello
将一个单词改为“hello”。将光标移到另一个单词后,我按下.再次这样做。1.对于更高级的命令,如替换,在执行替换后,只需点击:键,然后再按↑向上箭头键,它会用相同的命令填充命令行。
0tdrvxhp5#
若要在所有行上使用相同的标志重复前面的替换,可以使用Map
g&
。nhn9ugyo6#
如果您已在正常模式
:s/A/B/g
(当前行)或可视模式:'<,>'s/A/B/g
(当前选择中包含的行)下进行了替换,并且想要重复上次替换,则可以:&
,或者按:
-&
-<CR>
(外观类似:&
),即可影响当前行而不突出显示,或者:
-&
-<CR>
(外观类似:'<,'>&
)以影响选区中的行范围。由于我对Vim的了解有限,这解决了几个问题:首先,最后一个可视替换
:'<,'>s/A/B/g
可以作为最后一个命令使用(:
-<UP>
)从正常模式和视觉模式,但是总是产生来自正常模式的误差。(它仍然引用视觉模式中的最后一个选择--而不是像我假设的那样引用光标处的空选择--并且我的示例替换在一次遍历中耗尽了所有匹配。)同时,最后一个普通模式替换以:s
开始,而不是以:'<,'>s
开始,因此您需要修改它以便在可视模式中使用。最后,&
可以直接从普通模式中获得,因此它可以接受重复和其他选择,比如接下来两行的2&
,正如用户ruohola所说,g&
表示整个文件。在这两个版本中,按
:
然后按&
的效果就像您按了:
然后重新键入了s/A/B/
一样,因此您上次所处的模式是不相关的,只有当前光标行或所选内容才能确定该行(s)受影响。(请注意,像g
这样的尾随标志也会被清除,但在此语法中也是下一个标志,如:&g
/: '<,'>&g
。在我看来,这是一个好坏参半的问题,因为您可以/必须在此处重新指定标志,而独立的&
似乎根本不接受标志。我一定遗漏了什么。)我欢迎大家提出建议和修改意见。这些意见大部分来自于刚刚的实验,所以我相信还有更多的东西要做,但希望它们能有所帮助。
xcitsw887#
看看这个:http://vim.wikia.com/wiki/Using_command-line_history以获取解释。
pgx2nnw88#
您可以键入
@:
以重复上一个命令。