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

How do I use the same keymap for different commands depending on the file type?

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

noremap <F3> :Neoformat<CR>
autocmd FileType eruby bufdo map <F3> :Autoformat<CR>

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

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

使用自动命令:

augroup vimrc_eruby
  au!
  au FileType eruby noremap <buffer> <F3> :Autoformat<CR>
augroup END

但我非常鼓励阅读有关 ftplugin 的内容,并使用 ~/.vim/after/ftplugin/eruby.vim。在 vim 的帮助中阅读 setlocalmap-<buffer>b:undo_ftplugin

我已经写过几次关于在 Vi 和 Vim StackExchange 上使用这些工具的答案:​​https://vi.stackexchange.com/a/22256/10604, https://vi.stackexchange.com/a/15329/10604, https://vi.stackexchange.com/a/15019/10604