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

本文主要是介绍【vim 学习系列文章 13.1 -- 自动命令autocmd 根据文件类型设置vim参数】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 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 

这篇关于【vim 学习系列文章 13.1 -- 自动命令autocmd 根据文件类型设置vim参数】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/500604

相关文章

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变