我正在尝试在 vi 中映射我自己的快捷方式。我希望能够打开一个拆分窗口,其中包含我正在调用快捷方式的函数的声明。在我的 vimrc 中是这样的:
nmap <unique> <silent> <Leader>tg :exe 'vsplit'\| equivalent of <C-]>
但是在命令模式下 C-] 的等价物是什么?
请参阅 :help CTRL-]:
CTRL-] 跳转到光标下关键字的定义处。与 ":tag {ident}" 相同,其中 {ident} 是光标下方或之后的关键字。
不确定是否有内置的,但以下似乎与光标“下方或之后”的关键字匹配:
matchstr(getline('.'), '\%'.col('.').'c\s*\zs\k\+')
要在包含标记的行打开 vim,请foobar
在 shell 命令行中输入:
vim -t foobar
要在 vim 命令行类型上跳转到同一个标签:
:tag foobar
如果要拆分窗口并跳转到新窗口中的标记,请在 vim 的命令行中键入:
:stag foobar
如果您想要一个指定“光标下的单词”的击键,那么根据这个问题,您可以使用CTRL++来获得R CTRL:W
:tag CTRL+R CTRL+W
您还可以使用:
:nmap <leader>w :tag <c-r>=expand("<cword>")<c-r>
现在输入<leader>+w
(\在我的设置中,所以我会按\w)将与输入相同:tag <word under the cursor>
您还可以编写(例如将其映射到 Ctrl-Q):
:nmap <C-Q> <C-]>
在这种情况下,您还可以考虑 :nn[oremap] 以避免嵌套/递归映射。
您可以使用 跳转到光标下单词的定义exe "tag " . expand("<cword>")
。expand 函数将特殊标记替换为它们的含义 - 这包括光标下的文件名、当前文件名等。有关完整集的 expand() 函数,请参见 Vim 的帮助。
或者,您可以使用 :normal 命令,它允许您从 :ex 命令执行正常模式的键序列。