【vim 学习系列文章 13.1 -- 自动命令autocmd 根据文件类型设置vim参数】


请阅读【嵌入式开发学习必备专栏 之 Vim】


autocmd 根据文件类型配置vim参数

在 Vim 中,你可以使用 autocmd (自动命令)来根据文件类型自动执行特定的函数。首先,你需要定义这些函数,然后使用 autocmd 与文件类型模式匹配来调用这些函数。

以下是一个基本的 Vim 配置示例,该配置在 ~/.vimrc 文件中定义了两个函数,一个用于 C 类型文件,另一个用于 Python 类型文件。然后它使用 autocmd 来根据文件后缀名调用相应的函数。

" 在 ~/.vimrc 文件中定义你的函数

" 函数用于 C 文件的配置 
function! SetupCEnvironment() " C 相关的配置 
	set tabstop=4 
	set shiftwidth=4 
	set softtabstop=4 
	set expandtab 
	" 其他 C 文件类型特定的设置... 
endfunction

" 函数用于 Python 文件的配置
function! SetupPythonEnvironment()
	" Python 相关的配置 
	set tabstop=4 
	set shiftwidth=4 
	set softtabstop=4 
	set noexpandtab 
	" 其他 Python 文件类型特定的设置...
endfunction

" 设置文件类型特定的自动命令 
" 注意:这里的模式 '*.c' 和 '*.py' 与文件后缀名匹配

augroup filetype_c 
	autocmd! 
	autocmd FileType c call SetupCEnvironment() 
augroup END

augroup filetype_python 
	autocmd! 
	autocmd FileType python call SetupPythonEnvironment() 
augroup END

在上面的配置中,我们首先定义了两个函数 SetupCEnvironmentSetupPythonEnvironment。这些函数包含了文件类型特定的设置。然后我们定义了两个 augroup 块来包裹相关 autocmdautocmd! 命令清除了之前定义的同组自动命令,以避免重复。FileType 事件用于当 Vim 检测到特定文件类型时触发。

注意,Vim 的文件类型检测机制通常是根据文件的内容和扩展名来确定的。确保你的 Vim 已经启用了文件类型侦测功能,可以在 .vimrc 中包含以下命令来启用:

filetype plugin indent on 

可以使用逗号来分割多个模式,以匹配多种类型的文件:

function! SetupCEnv()
        set tabstop=8
        set shiftwidth=8
        set softtabstop=8
        set expandtab

endfunction

function! SetupUsrEnv()
        set tabstop=4
        set shiftwidth=4
        set softtabstop=4
        set expandtab
endfunction

augroup filetype_c
        autocmd!
        autocmd FileType *.c,*.h,*.cpp,*.cc call SetupCEnv()
augroup END

augroup filetype_python
        autocmd!
        autocmd FileType *.py,*.sh,*.csh,*.tcl,*.v call SetupUsrEnv()
augroup END

如果上面配置没有生效,可以进行单独配置,如下:

augroup filetype_usr
        autocmd!
        autocmd FileType python call SetupUsrEnv()
        autocmd FileType sh call SetupUsrEnv()
        autocmd FileType verilog call SetupUsrEnv()
        autocmd FileType csh call SetupUsrEnv()
        autocmd FileType tcl make call SetupUsrEnv()
        autocmd FileType make call SetupUsrEnv()
augroup END

vim 文本类型

Vim 通过文件类型(filetype)来决定如何为不同类型的文件启用特定的插件、语法高亮和缩进规则。Vim 支持的文件类型非常多,以下是一些常见的文件类型实例:

  • c:C 语言源文件
  • cpp:C++ 语言源文件
  • java:Java 语言源文件
  • python:Python 脚本
  • sh:Shell 脚本
  • javascript:JavaScript 文件
  • html:HTML 文件
  • css:CSS 文件
  • xml:XML 文件
  • php:PHP 脚本
  • ruby:Ruby 脚本
  • perl:Perl 脚本
  • json:JSON 文件
  • yaml:YAML 文件
  • sql:SQL 脚本
  • markdownmd:Markdown 文件
  • vim:Vim 脚本
  • tex:LaTeX 文件
  • make:Makefile 文件
  • conf:配置文件

要查看 Vim 支持的所有文件类型,你可以查阅 Vim 的文档或是检查 Vim 的 filetype.vim 文件,该文件定义了文件名模式到文件类型的映射。通常,你可以在 Vim 的安装目录的 ftplugin 目录下找到与这些文件类型相关的插件。

在 Vim 中,你可以使用以下命令查看当前打开的文件的文件类型:

:set filetype? 

或者使用:

:echo &filetype 

确保你已经启用了文件类型检测,通常在 vimrc 中会有类似这样的命令:

filetype plugin indent on 

这样,当你打开一个新的 .c, .cpp, 或 .s 文件时,Vim 会自动设置那些 inoremap 映射。当打开 .py, .v, 或 .sv 文件时,它会取消之前的映射设置。

FileType 后跟的是 Vim 识别的文件类型并不一定与文件扩展名完全对应。Vim 根据内部规则来识别文件类型。例如,.c 文件的文件类型是 c,而 .cpp 文件的文件类型是 cpp。汇编文件可能被识别为 asm,但这取决于具体的文件内容和Vim的文件类型插件。同样,对于 .py, .v, 和 .sv 文件,其文件类型分别被识别为 python, verilog, 和 systemverilog

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公CodingCos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值