Vim方法跳转到光标下的数字

时间:2017-02-01 22:35:46

标签: vim vim-macros

在vim中,是否有更优雅的方式跳转到光标下的行号而不是

map gn "nyw@nG

" GN"或其他一些关键组合?这需要确保光标位于数字串的开头。此外,这个宏可能会有点危险,这取决于寄存器" n"中的内容。

不完全确定为什么会这样:@n表示执行寄存器n(数字)中的内容,而不是将其与" G"连接。

类似

的功能
call cursor(expand("<cword>"),1)
似乎也没有工作。

思想?

1 个答案:

答案 0 :(得分:5)

我建议这样做:

nnoremap gn yiw:exec (@" =~ '^\d\+$' ? 'norm @"G' : '')<cr>

它修复了你提到的很多问题,例如:

  •   

    这需要确保光标位于单词的开头(“word”在这里表示数字串)。

    使用yiw代替yw修复此问题。阅读text objects

  •   

    另外,这个宏可能会有点危险,这取决于寄存器“n”中的内容。

    如果光标位于数字上,则只会执行任何代码。否则它什么都不做。

还有一些其他优点:

  • 使用nnoremap代替map是最佳做法。这将为您节省很多麻烦! (more info

  • 它不会弄乱你的@n注册。

  

甚至不能完全确定为什么会这样:@n表示执行寄存器n(数字)中的内容,而不是将其与“G”连接。

键入@n会将寄存器n中的文本插入到预先输入缓冲区中,就像您键入它一样。因此,如果命令未完成,它将坐在那里(就像你输入它一样)等待命令完成。你甚至可以运行像

这样的宏
3d
在删除其中三个动作之前,

将坐在那里等待动议。