我是vim的新手,刚开始玩宏,发现跳转/修改列表没有明显的覆盖行为。主要问题是--有没有稳定的方法来跳转同一行内的修改/移动(除了标记每个点),因为这个列表只记住同一行上的最后一次修改(如果行内的修改是有后果的)。
跳转列表示例。光标位置在'(','{'-标记为m。
一个月一个月一个月一个月一个月
我第一次跳到")",然后是同一行的标记,最后一个括号,我只能在第一行跳到最后一次,但预计会跳2次以上。
更改列表和g;
't1 t2 t3'-〉't2 t3 t4'的情况相同,我无法在所有3个t之间移动
至少我想跳过的点和保存在撤销历史中的一样。所有的现代编辑器,比如VSCode,Sublime,e.t.c.都有这个稳定的选项"Alt-"/" Alt +"来跳过所有以前的光标位置。Vim的方式是什么?
创建此宏时,试图使宏,其中交换任何2对括号。
{ smth } (
)
让我们用"mm"标记第一对括号,以记住我们应该交换谁。让我们将"{"标记为主括号,并转到"(",开始宏" qq "。我将当前括号对标记为" mc ",稍后在主括号和当前括号之间交换。@q=mc%x
m%Plx^O^Opmx
cPlxmP
( smth ) {
}
将光标移动到{并运行"@q "-我们将获得初始文本,两个括号交换
开始出现问题,第二对括号标记为mm,光标位于第一对括号。'('- mm,'{'-起始位置
{ smth } (
)
只有第一个^o起作用,然后宏将跳出此块
1条答案
按热度按时间eeq64g8w1#
有两条规则:“小”招不记;并且在离开插入模式时记住“改变”。
所以所有那些宏和东西它们都是某种“批处理工具”,而不是“通常的行编辑工具”。
相反,要从
t1 t2 t3
中得到t2 t3 t4
,你可以用ctrl-a w . w .
或来交换括号和d%%p
,等等。这种“小编辑”应该由Vim中的法线来完成。所以你需要先掌握法线。也许阅读Drew Neil的“实用Vim”会有所帮助。