Vim 中是否可以按文件类型进行键映射

Vim 中是否可以按文件类型进行键映射

我最近发现,当你输入不间断空格(nbsp在 HTML 文档中
,将 设置encoding为 utf-8,则无需nbsp;反复输入来格式化文本。我一开始
想,嘿,为什么我不像这样将其映射到空格键:imap <SPACE> <C-R>=nr2char(160)<CR>
后来我编辑了我的.vimrc,当我重新启动 Vim 时,我收到了十几个错误,说某个函数需要名称,
尽管我已经给出了名称。我意识到nbsp不被视为空格(duh),即使它
看起来像一个空格。所以,我认为更好的方法是进行每个文件类型的映射,这样当我编辑 html 文档时,空格会插入一个,而在编辑任何其他文件时会插入nbsp一个正常空格。chr(32)
我该怎么做呢?

答案1

au[tocommand]命令采用已设置FileType时运行的事件(例如,在使用文件名启动时)。例如:filetype~/.vimrc

au Filetype python source ~/.vim/scripts/python.vim

答案2

您可以使用文件类型插件,只有当文件属于特定文件类型时才会获取资源。要进行此设置,请创建文件~/.vim/ftplugin/html.vim并将命令放入此文件中。如果已有文件,您可以创建一个名为 html 的目录,然后目录中的每个文件都将被获取。请查看:h ftplugin-name用于其他命名选项。(如果目录不存在,请创建它们)

您需要在 vimrc 中拥有的只是filetype plugin indent on(缩进实际上不是必需的,但通常很有用)。

通过使用

map <buffer>

看看:h ftplugin:h filetype

相关内容