文件类型

回忆上节课内容

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

    • 正常模式下用 << 缩进
    • 插入模式下用 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. MyBatis延迟加载策略详解

    延迟加载就是在需要用到数据的时候才进行加载,不需要用到数据的时候就不加载数据.延迟加载也称为懒加载. 优点:在使用关联对象时,才从数据库中查询关联数据,大大降低数据库不必要开销. 缺点:因为只有当需要 ...

  2. Vue——Ajax请求的基本使用

    1.get方法发送Ajax请求 // 直接在 URL 上添加参数 ID=12345 axios.get('/user?ID=12345') .then(function (response) { co ...

  3. C# JObject.Add方法代码示例

    本文整理汇总了C#中Newtonsoft.Json.Linq.JObject.Add方法的典型用法代码示例.如果您正苦于以下问题:C# JObject.Add方法的具体用法?C# JObject.Ad ...

  4. Flutter(八):Flutter路由管理(Router)

    目录 一.术语 路由(route): 导航(Navigator): 二.路由管理 1.Navigator示例代码 2.路由定义(命名路由) 在App中定义router: 3.Navigator方法介绍 ...

  5. wrk压测工具安装和使用

    wrk压测工具安装: mkdir wrk git clone https://github.com/wg/wrk.git cd wrk/ cp wrk /usr/sbin/ wrk压测工具使用 使用方 ...

  6. Xcode Debugger Extremely Slow , Xcode Swift调试器调试时极其慢(😡)

    一.Xcode 调试器 我的项目是国内某办公软件的iOS客户端, 代码量极其庞大, 编译一次至少30min以上. 关键是,如果你遇到问题的时候,调试下断点,需要至少5min才能断下来,走下一步,又重复 ...

  7. js 判断闰年

    首先,我们需要了解闰年的判断方式 1.能被4整除 2.并且不能被100整除 3.或者被400整除的 其次我们再来回顾下函数封装的知识,所谓的函数封装就是将一段函数封装成一个工具,有人用到了拿过来就可以 ...

  8. 虚拟机ping不通物理机 PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.

    准备做samba服务配置的时候 ping 192.168.10.1 (物理机地址) PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data. 查看自 ...

  9. 剑指Offer-64.滑动窗口的最大值(C++/Java)

    题目: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6, ...

  10. ubuntu server 网速测试

    ubuntu server 网速测试 speedtest-cli是一个用于测试网络带宽的命令行工具,可以快速测量下载和上传速度.你可以按照以下步骤安装和使用它: 打开终端. 安装speedtest-c ...