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
它将坐在那里等待动议,然后删除其中三个动议。
在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
它将坐在那里等待动议,然后删除其中三个动议。