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.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 文件类型插件生效

图片描述

  • 还有什么好玩的吗?🤔
  • 下次再说 👋
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值