文件类型

回忆上节课内容

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

    • 正常模式下用 << 缩进
    • 插入模式下用 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. 多进程池Flask实战应用

    多进程池Flask实战应用 import json import math import flask from concurrent.futures import ProcessPoolExecuto ...

  2. 什么是Base64算法

    HTTP是超文本传输协议,所以HTTP协议中请求.相应都是以ASCII字符方式传输,如果要传输二进制需要经过BASE64或MIME等编码(因为HTTP协议pop3.smtp邮件协议都是针对文本的,而F ...

  3. LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践

    LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践 1.多模态大模型推理 LLM 的推理流程: 多模态的 LLM 的原理: 代码演示:使用 ModelScope NoteBook 完 ...

  4. 一款功能强大的Python工具,一键打包神器,一次编写、多平台运行!

    1.项目介绍 Briefcase是一个功能强大的工具,主要用于将Python项目转化为多种平台的独立本地应用.它支持多种安装格式,使得Python项目能够轻松打包并部署到不同的操作系统和设备上,如ma ...

  5. 【论文笔记】GoogLeNet系列

    [深度学习]总目录 Inception技术演进 Inception-V1: 2014年9月,<Going Deeper with Convolutions>提出了Inception模块,在 ...

  6. 【VMware vSphere】使用vSphere Lifecycle Manager(vLCM)管理独立主机和集群的生命周期。

    vSphere Lifecycle Manager(vLCM)是 vSphere 7 中引入的一项新功能,它提供了一种集中式.自动化和简单性的方式来管理和升级 vSphere 基础架构组件(如vCen ...

  7. k8s——istio

    安装istio Istio / 入门 [root@master ~]# curl -L https://istio.io/downloadIstio | sh - % Total % Received ...

  8. GNU GDB

    1 说明 本文主要介绍一些简单的.常用的gdb调试技巧. 环境:GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1) 参考文档:<gdb ...

  9. .NET 8 IApplicationBuilder详解

    在上节中我们已经得知 WebApplication 实现了 IApplicationBuilder,我们浅谈了其pipe特质和构建方法,本节中将深入了解 ApplicationBuilder 以窥探 ...

  10. dubbo~全局异常拦截器的使用与设计缺陷

    异常拦截器ExceptionMapper 在JAX-RS(Java API for RESTful Web Services)中,ExceptionMapper接口用于将Java异常映射到HTTP响应 ...