在vim中,是否有一种更优雅的方式来跳转到光标下的行号
map gn "nyw@nG
"gn"或其他一些关键组合?这需要确保光标位于数字串的开头.此外,根据寄存器"n"中的内容,此宏可能有点危险.
不完全确定甚至为什么这样做:@n
意味着执行寄存器n(数字)中的内容,而不是将它与"G"连接起来.
具有类似功能的功能
call cursor(expand(""),1)
似乎也没有工作.
思考?
我会推荐这个:
nnoremap gn yiw:exec (@" =~ '^\d\+$' ? 'norm @"G' : '')
它修复了你提到的很多问题,例如:
这需要确保光标位于单词的开头("单词"在这里表示数字串).
使用yiw
而不是yw
修复此问题.阅读文本对象!
此外,这个宏可能有点危险,取决于寄存器"n"中的内容.
如果光标在数字上,这将只执行任何代码.否则它什么都不做.
还有一些其他优点:
使用nnoremap
而不是map
最佳实践.这将为您节省很多麻烦!(更多信息)
它不会弄乱你的@n
注册.
不完全确定为什么会这样:@n表示执行寄存器n(数字)中的内容,而不是将它与"G"连接起来.
键入@n
将寄存器n中的文本插入到预先输入缓冲区中,就像您键入它一样.因此,如果命令未完成,它将坐在那里(就像你输入它一样)等待命令完成.你甚至可以运行一个宏
3d
在删除其中三个动作之前,它将坐在那里等待动议.