vi命令行相当于CTRL-]?

时间:2010-01-03 11:36:40

标签: vi vim ctags

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

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

但是命令模式中的C-相当于什么?

4 个答案:

答案 0 :(得分:3)

请参阅:帮助CTRL - ]:

  

CTRL-]跳转到的定义   光标下的关键字。与...一样   “:tag {ident}”,其中{ident}是      光标下或光标后的关键字。

修改

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

matchstr(getline('.'), '\%'.col('.').'c\s*\zs\k\+')

答案 1 :(得分:3)

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

vim -t foobar

要跳转到vim命令行类型上的相同标记:

:tag foobar

如果你想拆分窗口并跳转到新窗口中的标签,请在vim的命令行中输入:

:stag foobar

如果你想要一个指定“光标下的单词”的击键,那么根据this question,你可以使用 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>

相同

答案 2 :(得分:0)

你也可以写(例如将它映射到Ctrl-Q):

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

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

答案 3 :(得分:0)

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

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