如何根据文件类型对不同的命令使用相同的键盘映射?

Bra*_*don 0 vim neovim

我有以下配置,但是当我输入一个 eruby 文件然后返回到另一个文件时,F3 仍然执行:Autoformat.

noremap <F3> :Neoformat<CR>
autocmd FileType eruby bufdo map <F3> :Autoformat<CR>
Run Code Online (Sandbox Code Playgroud)

我希望它只在 eruby 缓冲区中应用该命令。

D. *_*ble 5

首先,不要bufdo在这里使用;它对所有缓冲区执行命令。其次,更喜欢<buffer>映射。

使用自动命令:

augroup vimrc_eruby
  au!
  au FileType eruby noremap <buffer> <F3> :Autoformat<CR>
augroup END
Run Code Online (Sandbox Code Playgroud)

但我强烈鼓励阅读有关ftplugins 的内容,并使用~/.vim/after/ftplugin/eruby.vim. 阅读setlocalmap-<buffer>b:undo_ftpluginVim的帮助。

我已经写了关于使用上VI族的Vim StackExchange这些工具几次答案:https://vi.stackexchange.com/a/22256/10604https://vi.stackexchange.com/a/15329/10604https://vi.stackexchange.com/a/15019/10604