如何在命令模式下使用Tab创建地图组合?

时间:2015-05-05 07:50:00

标签: vim

我想创建一个键组合,用于复制光标下的文本,打开:find命令,拉出单词,然后按Tab键自动完成列表中的第一个文件名,这样(99%) (例如)我只需按Enter即可打开文件。

map <Leader>o yw:find <C-R>"<Tab>

但是,当我按<Leader>o时,我会在命令行中获得:find FileName^I。我怎么能像我自己按键那样做出反应呢?

2 个答案:

答案 0 :(得分:3)

您需要wildcharm选项:

set wildcharm=<C-z>
map <Leader>o yw:find <C-R>"<C-z>

请参阅:help 'wildcharm'

这是一个更加可靠,非递归的替代方案,不会无缘无故地破坏未命名的寄存器:

nnoremap <leader>o :find <C-r><C-w><C-z>

答案 1 :(得分:1)

gf goto file )命令应该与映射完成相同的操作。这将打开名称位于光标之下或之后的文件。

如果没有达到预期的行为,则值得检查isfname选项的内容(使用set isfname?进行检查)。这指定了被视为文件路径名的有效字符的字符列表。

还值得检查/设置Vim path选项的内容,该选项列出了使用gf:find和类似命令时搜索的目录,例如MS上的默认设置Windows为.,,

  • .搜索相对于当前正在编辑的文件的目录
  • ,,(空字符串)搜索当前目录;使用cd命令检查(或设置)当前目录。

  • help gf
  • help isfname
  • help path