2

我正在尝试在 vi 中映射我自己的快捷方式。我希望能够打开一个拆分窗口,其中包含我正在调用快捷方式的函数的声明。在我的 vimrc 中是这样的:

nmap <unique> <silent> <Leader>tg :exe 'vsplit'\| equivalent of <C-]>

但是在命令模式下 C-] 的等价物是什么?

4

4 回答 4

3

请参阅 :help CTRL-]:

CTRL-] 跳转到光标下关键字的定义处。与 ":tag {ident}" 相同,其中 {ident} 是光标下方或之后的关键字。

编辑

不确定是否有内置的,但以下似乎与光标“下方或之后”的关键字匹配:

matchstr(getline('.'), '\%'.col('.').'c\s*\zs\k\+')
于 2010-01-03T15:29:39.787 回答
3

要在包含标记的行打开 vim,请foobar在 shell 命令行中输入:

vim -t foobar

要在 vim 命令行类型上跳转到同一个标签:

:tag foobar

如果要拆分窗口并跳转到新窗口中的标记,请在 vim 的命令行中键入:

:stag foobar

如果您想要一个指定“光标下的单词”的击键,那么根据这个问题,您可以使用CTRL++来获得R CTRLW

:tag CTRL+R CTRL+W

您还可以使用:

:nmap <leader>w :tag <c-r>=expand("<cword>")<c-r>

现在输入<leader>+w\在我的设置中,所以我会按\w)将与输入相同:tag <word under the cursor>

于 2010-01-03T19:54:17.667 回答
0

您还可以编写(例如将其映射到 Ctrl-Q):

:nmap <C-Q> <C-]>

在这种情况下,您还可以考虑 :nn[oremap] 以避免嵌套/递归映射。

于 2010-01-03T20:01:28.563 回答
0

您可以使用 跳转到光标下单词的定义exe "tag " . expand("<cword>")。expand 函数将特殊标记替换为它们的含义 - 这包括光标下的文件名、当前文件名等。有关完整集的 expand() 函数,请参见 Vim 的帮助。

或者,您可以使用 :normal 命令,它允许您从 :ex 命令执行正常模式的键序列。

于 2010-01-04T14:33:45.273 回答