从vim映射用于编译/运行不同语言代码的相同密钥

时间:2015-01-07 08:58:39

标签: vim

我的.vimrc中有map <F8> : w <bar> !clang -o %< % && ./%< <CR>,但我想映射F8以运行python代码。怎么可能? (显然我不想让clang运行python,我希望有条件或某些东西来重定向F8映射到的命令,基于已经指定的语言,例如通过:setf python等。)

2 个答案:

答案 0 :(得分:5)

您正在寻找特定于文件类型的映射。将Python变体放入~/.vim/after/ftplugin/python.vim,并将<buffer>关键字添加到:map命令:

nnoremap <buffer> <F8> : w <bar> !python % <CR>

这需要:filetype plugin on,但您可能已经拥有ftplugin/c.vim。同样,您可以将原始映射移至:n[nore]map,或将其保留为所有文件类型的全局回退。

其他提示

  • You should use :noremap;它使映射不受重映射和递归的影响。
  • 最好通过{{1}}指定适用的具体模式,在本例中为普通模式

答案 1 :(得分:2)

非常可行。这是一个示例,其中我有相同的键映射来整理不同类型的文件:

 autocmd FileType perl nnoremap <buffer> <F12> mz:%!perltidy<CR>`z
 autocmd FileType javascript nnoremap <buffer> <F12> :call JsBeautify()<CR>

我将这个添加到我的vimrc已经有一段时间了,但是如果内存和快速google为我服务很好,那么就会看到文件类型为perl或javascript的事件,然后运行nnoremap命令无论发生哪种事件。我相信还有很多其他方法可以实现它!