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

Vim method to jump to number under the cursor

在vim中,有没有比

更优雅的跳转到光标下的行号的方法
map gn "nyw@nG

"gn" 或其他一些组合键?这需要确保光标位于数字字符串的开头。此外,根据寄存器 "n".

中的内容,此宏可能有点危险

甚至不完全确定为什么会这样:@n 意味着执行寄存器 n(一个数字)中的内容,而不是将它与 "G".

连接起来

类似

的功能
call cursor(expand("<cword>"),1)

好像也不行。

想法?

我会推荐这个:

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

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

  • this necessitates ensuring the cursor is at the beginning of the word ("word" here means string of numbers).

    使用 yiw 而不是 yw 可以解决这个问题。继续阅读 text objects!

  • also, this macro COULD be a bit hazardous depending on what's in register "n".

    这只会在您的光标悬停在数字上时执行任何代码。否则它什么都不做。

还有其他一些优点:

  • 最好使用 nnoremap 而不是 map。它将为您省去很多麻烦! (more info)

  • 它不会干扰您的 @n 寄存器。

not entirely sure even why this works: @n means to execute what's in register n (a number), not concatenate it with the "G".

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

这样的宏
3d

它将坐在那里等待动议,然后删除其中三个动议。