我的.vimrc中有map <F8> : w <bar> !clang -o %< % && ./%< <CR>
,但我想映射F8以运行python代码。怎么可能? (显然我不想让clang运行python,我希望有条件或某些东西来重定向F8映射到的命令,基于已经指定的语言,例如通过:setf python等。)
答案 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
,或将其保留为所有文件类型的全局回退。
:noremap
;它使映射不受重映射和递归的影响。答案 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
命令无论发生哪种事件。我相信还有很多其他方法可以实现它!