在映射中使用<cword>的VIM问题</cword>

时间:2012-11-05 23:08:19

标签: java vim configuration mapping

我正在尝试向使用vim的{​​{1}}添加漂亮的映射。我的想法是我可以将光标放在类名上,点击command-t,该类的相关<leader>f文件将立即在新缓冲区中打开(我已设置.javahidden)。

我的on包含

.vimrc

除了没有展开光标词之外,其效果很好,我最终搜索的是map <leader>f :CommandT<cr>=expand("<cword>")<tab><cr> ,而不是光标词本身。

我也尝试过简单;

=expand("<cword>")

达到同样的效果(粘贴和搜索map <leader>f :CommandT<cr><cword><tab><cr> )。好消息是如果我手动做的话;

<cword>

它完美无缺,所以至少理论是正确的。

2 个答案:

答案 0 :(得分:3)

你必须使用feedkeys:

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

。其他一些注意事项:不要使用map,除非你真的需要重新映射(因此nore,我认为这里没有必要)及其所有模式(正常,运算符挂起和可视)(因此导致n)。

双引号字符串中的

\t\<LT>Tab><C-v><Tab>的简写(在映射内部,您必须使用其中一个将文字\<Tab>插入字符串(第一个)或文字标签(第二个))。

答案 1 :(得分:2)

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

  1. 安装ctags。

  2. 为您的项目编制索引:

    :!ctags -R .
    
  3. 确保Vim在您的项目中找到正确的tags文件(项目的索​​引):

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

    <C-]>
    

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

    <C-w>]
    

    这个要跳回来:

    <C-t>
    

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

    <C-w>}
    
  5. 有关详情,请参阅:help tags