在vim中,有没有比更优雅的方法可以跳到光标下的行号
map gn "nyw@nG
"gn"或其他组合键?这就需要确保光标位于字符串的开头。此外,这个宏可能有点危险,这取决于寄存器"n"中的内容。
甚至不完全确定为什么这样做:@n
意味着执行寄存器n(一个数字)中的内容,而不是将其和"G"连接。
类似的功能
call cursor(expand("<cword>"),1)
似乎也不起作用。
想法?
我建议这样做:
nnoremap gn yiw:exec (@" =~ '^d+$' ? 'norm @"G' : '')<cr>
它修复了您提到的许多问题,例如:
这需要确保光标位于单词的开头(这里的"单词"表示一串数字)。
使用
yiw
而不是yw
可以解决此问题。阅读文本对象!此外,这个宏可能有点危险,这取决于寄存器中的内容";n〃;。
只有当光标位于数字上时,才会执行任何代码。否则,它什么也不做。
还有一些其他优势:
使用
nnoremap
而不是map
是最佳实践。这将为你省去很多麻烦!(更多信息)它不会干扰您的
@n
寄存器。
甚至不完全确定为什么这样做:@n意味着执行寄存器n(一个数字)中的内容,而不是将其与"连接;G";。
键入@n
会将寄存器n中的文本插入到预编型缓冲区中,就像您键入了它一样。因此,如果命令未完成,它会放在那里(就像您键入的一样)等待命令完成。你甚至可以运行像这样的宏
3d
它将坐在那里等待一项动议,然后删除其中三项动议。