为来自 vim 的不同语言的 Compiling/Running 代码映射相同的键

Mapping the same key for Compiling/Running code of different languages from vim

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

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

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

自从我将它添加到我的 vimrc 中已经有一段时间了,但是如果记忆和快速 google 对我有用,它会监视 fileype 是 perl 或 javascript 的事件,并且然后为发生的任何事件运行 nnoremap 命令。我相信还有很多其他方法可以实现它!

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

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

这需要 :filetype plugin on,但您可能已经有了。同样,您可以将原始映射移动到 ftplugin/c.vim,或将其保留为所有文件类型的全局后备。

其他提示

  • You should use :noremap;它使映射不受重新映射和递归的影响。
  • 最好指定它适用的具体模式,在这种情况下 正常模式 通过 :n[nore]map