为来自 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
。
我的 .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
。