文件类型

回忆上节课内容

  • 上次了解了缩进的各种方式

    • 正常模式下用 << 缩进
    • 插入模式下用 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.vim
    • java 对应 java.vim
    • html 对应 html.vim
    • 不同的文件类型可以设置不同的缩进

      • c 缩进为 8
      • java 缩进为 4
      • html 缩进为 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 文件会如何呢?

    • 可以注意到状态栏的变化
    • 由于不同文件类型 filetypesyntax 文件不同
    • 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 - 文件类型的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  8. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  9. oeasy教您玩转linux010109clear清屏

     回忆上次内容 上次讲了灵魂三问 whatis whereis which 通过这三个问题,可以对命令基本了解,我们来试一下!!

  10. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

随机推荐

  1. 京东面试:如何进行JVM调优?

    JVM 调优是一个很大的话题,在回答"如何进行 JVM 调优?"之前,首先我们要回答一个更为关键的问题,那就是,我们为什么要进行 JVM 调优? 只有知道了为什么要进行 JVM 调 ...

  2. post请求和get请求区别及其实例

    1.一般我们在浏览器输入一个网址访问网站都是GET请求;在FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式.HTTP定义了与服务器交互的不同方法, ...

  3. JVM Sandbox入门详解

    一. 概述 在日常开发中,经常会接触到面向AOP编程的思想,我们通常会使用Spring AOP来做统一的权限认证.异常捕获返回.日志记录等工作.之所以使用Spring AOP来实现上述功能,是因为这些 ...

  4. mysql忘记密码找回的方法

    mysql忘记密码找回的方法: 在找回之前需要对 --skip-networking 参数进行了解 --skip-grant-tables: 关闭mysql验证模块 同时还需要关闭远程连接(避免他人连 ...

  5. TIM_Cmd()函数引发的思考

    在使用定时器的输入捕获进行频率测量时发现用TIM_Cmd()函数关闭定时器后,输入捕获中断还是会被触发,这就很奇怪了,输入捕获是定时器的一种模式,关闭定时器不就意味着输入捕获捕获也被关闭了吗?可是实际 ...

  6. 获取某一个数的2进制位数以及bitmask

    举例说明:比如32对应的2进制为2b'100000,对应的bitmask为2b'11111. 实现代码: #include <stdio.h> typedef unsigned char ...

  7. kettle从入门到精通 第三十三课 再谈 kettle 表输出 分区/分片

    1.之前第九章有讲过kettle 表输出步骤,里面有简单的提到过表输出步骤里面的表分区设置,这里详细介绍下. 表分区数据:选择此选项可根据"分区"字段中指定的日期字段的值将数据拆分 ...

  8. Linux Topicons Plus桌面工具安装

    Topicons Plus是Linux系统GNOME桌面环境的工具,方便于在工具栏显示应用小图标. 1.进入GNOME商店搜搜下载TopIcons Plus工具.下载路径:https://extens ...

  9. C# ML.NET 使用GPU遇到 Failed to get convolution algorithm.This is probably because cuDNN failed to initialize

    C# ML.NET 使用GPU遇到 Failed to get convolution algorithm.This is probably because cuDNN failed to initi ...

  10. MySQL where 操作符

    MySql WHERE 操作符号 前言 在 WHERE 子句中,你可以使用任何条件对记录进行过滤. 准备工作 准备 users 表,并插入数据 # 创建用户表 users create table u ...