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

news/2024/11/21 1:26:42/

文章目录

  • 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 ENDaugroup 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=8set shiftwidth=8set softtabstop=8set expandtabendfunctionfunction! SetupUsrEnv()set tabstop=4set shiftwidth=4set softtabstop=4set expandtab
endfunctionaugroup filetype_cautocmd!autocmd FileType *.c,*.h,*.cpp,*.cc call SetupCEnv()
augroup ENDaugroup filetype_pythonautocmd!autocmd FileType *.py,*.sh,*.csh,*.tcl,*.v call SetupUsrEnv()
augroup END

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

augroup filetype_usrautocmd!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 

http://www.ppmy.cn/news/1271440.html

相关文章

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring中bean的作用域和bean的生命周期

第一章 Spring中bean的作用域 1.1 语法 在bean标签中添加属性:scope属性即可 1.2 四个作用域 singleton【默认值】:单例【在容器中只有一个对象】 对象创建时机:创建容器对象时,创建对象执行 prototype:多例【在容…

WebGL+Three.js入门与实战——给画布换颜色、绘制一个点、三维坐标系

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

【unity小技巧】unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡,复制粘贴即可

最终效果 文章目录 最终效果前言为什么使用CharacterControllerSimpleMove和Move如何选择?1. SimpleMove2. Move 配置CharacterController参数控制相机移动跳跃下蹲处理下坡抖动问题实现奔跑和不同移速控制完整代码完结 前言 其实一开始我是不打算写的,…

Python将已标注的两张图片进行上下拼接并修改、合并其对应的Labelme标注文件(v2.0)

Python将已标注的两张图片进行上下拼接并修改、合并其对应的Labelme标注文件(v2.0) 前言前提条件相关介绍实验环境上下拼接图片并修改、合并其对应的Labelme标注文件代码实现输出结果 前言 此版代码,相较于Python将已标注的两张图片进行上下拼…

Vue学习笔记-Vue3中的Teleport组件

作用 该组件的作用一般用于CSS样式&#xff0c;Teleport能够将写在其中的组件传输到指定位置 使用示范 <!--to中的属性值可以写css选择器&#xff0c;例如 to"#idName"--> <teleport to"body"><div><h3>我是一个弹窗</h3>…

ubuntu pycharm 死机,如何重启

1. 找出pycharm 进程的id 进入命令行&#xff1a; ps -ef 是查看当前运行的进程 值输入 ps -ef 会返回所有当前执行的进程&#xff0c;太多了&#xff0c;过滤一下&#xff0c;找到 pycharm : ps -ef | grep pycharm 2. 使用 kill -s 9 来杀死进程 如图所是&#xff0c;…

Excel中MATCH和INDEX函数的用法详解,以及Vlookup的数组用法

match函数 目的&#xff1a;查询函数&#xff0c;范围单元格中搜索特定的项&#xff0c;然后返回该项在此区域中的相对位置。 For example:让 match 去【隔壁办公室】找【老张】 Match 回复&#xff1a;【老张】坐在【隔壁办公室】第【四】个座位上 公式&#xff1a;【 mat…

第三章 Django 视图系统

第一章 Django 基本使用 第二章 Django URL路由系统 第三章 Django 视图系统 第四章 Django 模板系统 第五章 Django 数据模型系统(基本使用) 第六章 Django 数据模型系统(多表操作) 第七章 Django 用户认证与会话技术 第八章 Django CSRF防护 文章目录 Django内建函数与HTTP请…