1

我正在尝试为vim使用添加一个漂亮的映射command-t。这个想法是我可以将光标放在类名上, hit <leader>f,并且该类的相关.java文件将立即在新缓冲区中打开(我已hidden设置为on)。

我的.vimrc包含

map <leader>f :CommandT<cr>=expand("<cword>")<tab><cr>

效果很好,除了光标词没有扩展,我最终搜索的是=expand("<cword>"),而不是光标词本身。

我也简单地尝试过;

map <leader>f :CommandT<cr><cword><tab><cr>

效果大致相同(<cword>粘贴并搜索)。好消息是,如果我手动执行;

map <leader>f :CommandT<cr>MyClassName<tab><cr>

它工作得很好,所以至少这个理论是正确的。

4

2 回答 2

4

您必须使用 feedkeys:

nnoremap \f :<C-u>execute'CommandT'<Bar>call feedkeys(expand('<cword>')."\t\<LT>CR>",'t')<CR>

. 其他一些注意事项:map除非您确实需要重新映射(因此nore,我认为这里不需要)及其所有模式(正常、操作员挂起和可视)(因此领先n),否则不要使用。

\tinside 双引号字符串是\<LT>Tab>or的简写<C-v><Tab>(在映射内部,您必须使用其中一个来将文字\<Tab>插入字符串(第一个)或文字选项卡(第二个))。

于 2012-11-06T03:20:21.190 回答
1

使用ctags,这就是它的用途。

  1. 安装 ctags。

  2. 索引您的项目:

    :!ctags -R .
    
  3. tags确保无论您在项目中的什么位置,Vim 都能找到正确的文件(项目的索​​引):

    set tags=./tags,tags:$HOME
    
  4. 将光标放在方法或类名上,然后点击以下快捷方式跳转到定义:

    <C-]>
    

    或者这个打开一个新窗口:

    <C-w>]
    

    而这个要跳回去:

    <C-t>
    

    或者这个在一个小的预览窗口中显示签名:

    <C-w>}
    

查看:help tags更多。

于 2012-11-06T08:43:30.280 回答