如何让 vim 根据文件类型执行命令?
最近我一直在编辑很多Python文件和注释自动缩进到第0列。
解决此问题的一种方法是运行命令inoremap # X#<left><backspace><right>
如何在每次打开 python (*.py) 文件进行编辑时运行此命令?
使用 vim 的文件类型插件机制。
对此(至少)有两种解决方案,其中一种优于另一种。
autocmd FileType这已经作为答案发布,但一般形式是
augroup your_group
autocmd!
autocmd FileType python your good code
augroup END
Run Code Online (Sandbox Code Playgroud)
这是有效的,并且具有在 vimrc 中对代码进行分组的优点。
但还有第二种更强大、可能性能更高的替代方案。这是我的首选解决方案。
after/ftplugin其要点是您需要文件类型检测和插件(filetype plugin
on至少,尽管您可能需要filetype plugin indent on)。然后您将文件类型特定的代码放入~/.vim/after/ftplugin/<filetype>.vim(或一些变体,请参阅:h add-filetype-plugin、:h ftplugin-name、:h ftplugin)。
所以最终,
" ~/.vim/after/ftplugin/python.vim
inoremap # X#<left><backspace><right>
Run Code Online (Sandbox Code Playgroud)
正确设置是一个很好的做法b:undo_ftplugin:它会有所帮助(相信我)。你可以借用我在 Github 上的撤消脚本。
尽可能考虑使用<buffer>、-buffer、setlocal、 和。<LocalLeader>毕竟,这是针对本地事物的。
与单行自动命令相比,脚本为您提供了更大的灵活性。您必须跳过更多的环节才能在自动命令中执行任何复杂的操作,而在脚本中它们就可以了。此外,你感觉更像是在编写一个程序(你确实是这样),而不是一次性配置。
模块化也非常适合组织:所有 Python 自定义代码都位于一处。
而且打字也少了很多:)
我没有测量任何东西。别开枪打我。
拥有大量自动命令会减慢 vim 的速度,因为在事件触发时必须检查它们。不要用文件类型的东西阻塞自动命令,而是使用已经为您提供的文件(ftplugin)。
通过利用现有的定制机制,您可以获得所有好处,并且没有任何风险。同样,让 vim 按需获取文件然后尝试重新实现它的 ftplugin 轮子几乎肯定会更有效。
| 归档时间: |
|
| 查看次数: |
3633 次 |
| 最近记录: |