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的位置怎么办?
随机推荐
- 如何模拟HTTP请求并验证功能
要模拟HTTP请求并验证功能,你可以使用Spring Boot提供的MockMvc工具,它允许我们在没有实际启动HTTP服务器的情况下测试Spring MVC控制器.以下是一个使用MockMvc进行H ...
- 联网安装与源码安装mysql
一.卸载mariadb的rpm包 1.首先,你需要找出已安装的MariaDB包的具体名称.可以使用以下命令列出所有已安装的MariaDB包: rpm -qa | grep mariadb 2.删除命令 ...
- Vue cli之创建组件
一般在开发中,我们会人为把组件分2个目录存放,一个代表的页面组件,另一个代表页面一部分的子组件. src/ |- views/ |- Home.vue |- components/ |- App.vu ...
- windows下IPv4通信(C++、MFC)
Cilect #include <stdio.h> #include <Ws2tcpip.h> #include <winsock2.h> #define HELL ...
- 7.13晚考试总结(NOIP模拟14)[队长快跑·影魔·抛硬币]
樱花满地集于我心,楪舞纷飞祈愿相随 前言 终于没有令人头疼的数学了,总感觉这次考试的题目比较良心. 尤其是对于部分分的明细就非常到位(不像上一场的凭感觉给出部分分). 这就令我这种靠部分分暴力的菜鸡选 ...
- uniapp 小程序分享功能
上个月在做小程序的项目时,甲方需要给小程序添加个分享的功能,查看uniapp官方文档后,发现uniapp有自带的小程序分享功能(https://uniapp.dcloud.io/api/plugins ...
- Qt下载、安装及环境搭建
1 下载 刚开始去的官网下载,需要注册账号,而且还比较麻烦,后来找到了一个安装包的链接,直接下载就好了:http://mirrors.ustc.edu.cn/qtproject/archive/qt ...
- NFS练习
NFS练习题 1.开放/nfs/share目录,提供给 任意用户 只读(/etc/exports ro) 查询 1.任意客户端2.任意的用户 服务端 showmout exportfs system ...
- rust 程序设计笔记(2)所有权 & 引用
所有权 数据存储在栈和堆上,存放在栈上的数据都是已知所占据空间的 突然的问题 // 内存中的栈是怎么存储数据的? 好的,想象一下你有一摞盘子.你只能从上面放盘子,也只能从上面拿盘子,这就是栈的工作方式 ...
- Vue 打包相关
Vue 打包相关 vue-cli-service build# 用法:vue-cli-service build [options] [entry|pattern] 选项: --mode 指定环境模式 ...