oeasy教您玩转vim - 27 - 文件类型
文件类型
回忆上节课内容
上次了解了缩进的各种方式
- 正常模式下用
<<缩进 - 插入模式下用
tab缩进 - 显示缩进情况
:set listchars=eol:$,tab:>-,space:_
- 正常模式下用
有关于缩进对应空格数的参数
- expandtab
- shiftwidth
- tabstop
- softtabstop
- autoindent
- 简写为
:set noet sw=4 ts=4 sts=4 ai - 不同的文件类型可以对应不同的缩进长度吗??
检测文件类型

- 首先需要检测文件类型
:filetype可以设置当前文件类型检测信息:filetype on检测文件扩展名:filetype off取消检测文件扩展名
如果是
.c- 并且
:filetype on - 就可以检测文件类型为
.c - 那我怎么知道
filetype是什么呢?
- 并且
:set filetype?- 结果是
filetype=c
- 结果是
- 但是如何单独设置
.c文件缩进为8呢?
文件类型缩进设置
- 我们书写一个
demo.c - 可以发现这个文件 tab 是对应着 4 个空格的

如果想单独设置
.c文件类型的缩进的话- 需要打开文件类型缩进的开关
:filetype indent on
找到缩进配置文件
系统的配置文件的位置在
/usr/share/vim/vim81/indent/c对应c.vimjava对应java.vimhtml对应html.vim不同的文件类型可以设置不同的缩进
c缩进为8java缩进为4html缩进为2
- 找到了
/usr/share/vim/vim81/indent/c.vim就可以设置c的缩进
在最后加上
:set et sw=8 ts=8 sts=8 ai
- 然后退出并重新打开
demo.c - 再g g = G
- 就可以按照新设置的
/usr/share/vim/vim81/indent/c.vim来重新控制缩进了
更改文件类型

- 我们打开
demo.c时,系统会检测他的文件类型 - 但是如果我们非要
硬要说他是一个java文件会如何呢? :set filetype=java- 文件对于
include之类的语法高亮消失了 - g g = G
让文件缩进的数量变回了
4- 按照
java文件缩进的要求来做
- 按照
- 高亮可以根据文件类型而不同么?
文件类型语法高亮
#找出所有的java.vim文件
sudo find / -name "java.vim"
- 找出所有和 java 有关的文件

- 在
indent下的java.vim负责缩进 - 在
syntax下的java.vim负责语法高亮 语法高亮的设置在
/usr/share/vim/vim81/syntax/下面

:syntax on可以设置关键词高亮,这个是所有语法高亮的根开关
文件类型的插件
除此之外,也可以加载
java文件类型的的插件plugin- 文件类型插件可以设置一键编译运行、跳转到函数定义之类的
- 前提是
:set filetype plugin on
文件类型插件的设置在
/usr/share/vim/vim81/ftplugin/下面- ftplugin = FileType Plugin
回忆文件类型缩进和语法
- 在
indent下的java.vim负责缩进 - 在
syntax下的java.vim负责语法高亮
- 在
在
ftplugin下的java.vim- 负责针对
java文件类型的插件
- 负责针对
命名规则
- 除了对于每个用户都好使的高亮、缩进和插件之外
- 用户还可以设置只对于自己好使的高亮、缩进和插件

- 以
java语言的插件来举例 系统通用文件夹
/usr/share/vim/vim81/ftplugin/java.vim/usr/share/vim/vim81/ftplugin/java_xxx.vim/usr/share/vim/vim81/ftplugin/java/xxx.vim
用户专用文件夹
~/.vim/ftplugin/java.vim~/.vim/ftplugin/java_def.vim~/.vim/ftplugin/java/header.vim
上面是命名的规则
- java 对应的就是 filetype
文件夹不存在?
如果没有文件夹的话就要新建
:!mkdir -p ~/.vim/ftplugin- 注意是
ftplugin而不是plugin plugin里面的插件全部都被加载ftplugin里面的插件根据文件类型加载
尝试分文件类型进行控制
- 保存后
打开 java 文件时
状态栏告诉我这是 java 文件
- 第三行 set statusline=[oeasy-java]%F%m
打开 css 文件时
- 状态栏告诉我这是 css 文件
- 第三行 set statusline=[oeasy-css]%F%m
- 都设置好之后
- 分别打开java文件和css文件

强行指定

如果我偏说
css文件是java文件会如何呢?- 可以注意到状态栏的变化
- 由于不同文件类型
filetype的syntax文件不同 - 用
css的语法去标注java的高亮组 - 所以高亮显示的状态也不同
总结
- 根据扩展名我们可以设置某些特定类型文件的配置
- 相关文件类型的设置放在相应的文件夹里
文件类型缩进文件夹
/usr/share/vim/vim81/indent/
文件类型语法高亮文件夹
/usr/share/vim/vim81/syntax/
文件类型插件文件夹
系统通用文件夹
/usr/share/vim/vim81/ftplugin/java.vim/usr/share/vim/vim81/ftplugin/java_xxx.vim/usr/share/vim/vim81/ftplugin/java/xxx.vim
用户专用插件文件夹
~/.vim/ftplugin/java.vim~/.vim/ftplugin/java_def.vim~/.vim/ftplugin/java/header.vim
在 文件夹
~/.vim/ftplugin中 的html.vim的设置- 只针对
html - 包括文件的缩进、配色、语法高亮、行号、状态栏等
- 只针对
:filetype indent on文件类型缩进生效:filetype syntax on文件类型语法高亮生效:filetype plugin on文件类型插件生效

- 还有什么好玩的吗?
- 下次再说
oeasy教您玩转vim - 27 - 文件类型的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010109clear清屏
回忆上次内容 上次讲了灵魂三问 whatis whereis which 通过这三个问题,可以对命令基本了解,我们来试一下!!
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
随机推荐
- 【漏洞复现】用友NC uapjs RCE漏洞(CNVD-C-2023-76801)
产品介绍 用友NC是一款企业级ERP软件.作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计.采购管理.销售管理.物料管理.生产计划和人力资源管理等,帮助企业实现数字化转型和高效管 ...
- Win11任务栏图标重叠、混乱、异常、闪烁、乱动问题解决方法
重启资源管理器 1.按如CTRL + Shift + ESC打开任务管理器 2.找到Windows资源管理器,右键重启资源管理器即可(通常有用) 解决方法2(来自微软官方,未尝试): 如果问题依旧,可 ...
- C#实现的一个图片切割工具
效果如图: 工具代码: using System.Drawing; using System.Drawing.Imaging; class ImageCutterConfig { /// <su ...
- Nacos 版本不一致报错: Request nacos server failed
在做微服务开发中,测试环境使用Nacos没有问题,但是生产环境服务启动一直报错: com.alibaba.nacos.api.exception.NacosException: Request nac ...
- LeetCode 715. Range Module Range 模块 (Java)
题目: A Range Module is a module that tracks ranges of numbers. Your task is to design and implement t ...
- .NET借助虚拟网卡实现一个简单异地组网工具
由于工作需要,经常需要远程客户的服务器,但是并不是所有服务器都能开外网端口,使用向日葵等软件终究还是不太方便,于是找了很多工具,包括zerotier 等,但是由于服务器在国外等有时候还不同, 于是开始 ...
- C#.NET ASP.NET IIS 加载.pfx私钥证书时报错“出现了内部错误。”
C#.NET ASP.NET IIS 加载.pfx私钥证书时报错"出现了内部错误." 原始代码报错: X509Certificate2 x509cer = new X509Cert ...
- Kubernetes监控手册03-宿主监控实操
生产环境大都是在 Linux 下的,所以这篇文章我们先来分享如何使用 Categraf 采集 Linux OS 相关的指标.读完本篇内容,你应该可以完成机器层面的监控了. 原理概述 Categraf ...
- Scrapy框架(八)--CrawlSpider
CrawlSpider类,Spider的一个子类 - 全站数据爬取的方式 - 基于Spider:手动请求 - 基于CrawlSpider - CrawlSpider的使用: - 创建一个工程 - cd ...
- idea编译报错 Lombok运行测试类报错 jar依赖冲突解决
idea编译报错 Lombok运行测试类报错 jar依赖冲突解决 1.现象是idea编译,运行项目的时候是没有问题,可以正常跑起来.2.运行junit测试类的时候,报错提示 lombok找不到类,解决 ...