1. 概述

  1. vim 是强大的文本编辑器
  2. 使用 vim 前, 需要做些简单配置, 来让 vim 更符合自己的操作习惯
  3. 想看配置项的, 直接到最后

2. 准备

  1. 安装 vim

  2. 配置文件
    1. 位置
      /etc/vimrc
  3. 格式
    1. 设置没有值的属性
      set <attrName>
    2. 设置有值的属性
      set <attrName>=<attrValue>
    3. " 的后面开始是注释
    4. 例子
      set ai                    " 开启自动缩进, 其中 ai 是 autoindent 的缩写; 本人不建议使用缩写, 知道一个名字的由来, 以及这背后的一些故事, 对你理解一个概念很重要;
      set history=50 " 默认保留 50 条历史

3. 配置

  1. tab

    1. 概述

      1. vim 里 tab 相关的设置
    2. 背景

      1. 编程开发中, 通常用 tab 来做缩进, 相对空格键更加方便
      2. tab 在显示的时候, 会换算为 若干个空格 来显示, tab 输入的时候, 有时也会用 若干个空格 来代替
      3. 开发者通常会使用多个不同的 平台, 文本编辑器, 或者 IDE 来编辑文本
      4. 这样就可能出现 同样的代码, 在不同环境下显示的效果不同
      5. 这样的话, 可能会出现一些不太好的情况, 轻则看起来别扭, 重则破坏缩进, 影响某些程序的运行(没错, 说的就是你, python)
    3. 相关设置项

      1. tabstop

        1. 这是一个有值的属性
        2. 表示 一个 tab 对应的 显示空格长度, 只与显示相关
          1. 也就是说, 如果 没有tab 的话, 这个选项就没啥用了...
        3. 默认值是 8
        4. 感兴趣的同学, 可以在 ruler 打开的情况下, 比较 tabstop 不同时, tab 的占位表现
      2. expandtab
        1. 这是个没有值的属性
        2. 如果设定, 则在 insert 模式下, 输入 tab 会转换为 softtabstop 个空格
        3. 默认值是 noexpandtab
      3. shiftwidth
        1. 这是一个有值的属性
        2. 表示 v 模式下, 一个 < 或者 > 对应的空格长度
        3. 默认值是 8, 应该和某个属性关联, 这个有待确认
      4. softtabstop
        1. 这是一个有值的属性
        2. noexpandtab 情况下
          1. softtabstop = 4, tabstop = 8, 按一次 tab, 会出现 4 个空格, 按 2 次 tab, 会出现一个 tab
          2. softtabstop = 8, tabstop = 8, 按一次 tab, 会出现 1 个 tab
          3. softtabstop = 16, tabstop = 8, 按一次 tab 会出现 2 个 tab
          4. 这些可以在 insert 模式下, 输入 tab, 观察 ruler 以及 按 左右键 观测得到
        3. expandtab 情况下
          1. 按一次 tab, 出现 softtabstop 个空格
          2. 如果打开文件里存在 tab, 那显示还是按 tab 来, 长度是 tabstop
        4. 自动换行也会受这个属性的影响

4. 其他选项

  1. 概述

    1. 常用的一些选项
  2. 选项

    1. autoindent

      1. 自动换行
      2. 默认不换行
    2. number
      1. 显示行号
      2. 默认不显示
    3. ruler
      1. 会在 右下角 显示 光标的位置

        1. 包括行, 列, 以及当前页 在整体文本中 的位置
      2. 默认显示

5. 有些问题

  1. 关于删除

    1. 开启 expandtab时, 输入 4 个空格, 删除完需要删除 4 次; 输入 1 个 tab, 删除完只需要 1 次; 这个有点想不通是如何区分的
  2. 关于 tabstop 和 softtabstop
    1. 什么样的人, 在什么场景下, 会把这俩设置成不一样的, 感觉使用起来, 很别扭啊...

6. 配置

" 这些是我自己加的配置项
" vim 的配置项如果出现冲突, 后面的会覆盖前面的
set tabstop=4
set expandtab
set shiftwidth=4
set softtabstop=4 set autoindent
set number
set ruler

ps

  1. ref

    1. Vim Tab使用技巧

      1. 这位老兄, 也对 tab 相关的东西做了一些总结, 感觉理解的比我透彻

VIM - tab 相关的简单配置的更多相关文章

  1. Ubuntu环境下gedit以及vim的一些个简单配置

    Gedit的配置: 参见 http://www.cnblogs.com/csulennon/p/4198054.html Gedit插件安装 Gedit快捷键 参见我的博客 添加快捷键 Ctrl + ...

  2. Linux中vim的简单配置

    本文主要分享Linux中vim的简单配置 ★配置文件的位置     在目录/etc.下面,有个名为vimrc的文件,这就是系统中公共的vim配置文件,对所有用户都开放.而在每个用户的主目录下,都可以自 ...

  3. CCNA网络工程师学习进程(6)vlan相关协议的配置与路由器简单配置介绍

        前面已经介绍了大部分与vlan技术相关的交换机的协议的配置,更深层次的还有STP协议和以太网端口聚合技术,接着还会简单介绍一下路由器的基本应用.     (1)STP(Spanning-tre ...

  4. 手机端rem简单配置相关

    手机端rem简单配置相关 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 ...

  5. Linux下Openfire相关安装和配置

    记录下来,方便下次再用时从头查找资料 小京东ecshop中的通讯有用到openfire,Window下配置安装很简单,直接下载exe文件安装就行,而linux下要麻烦一点.安装后的配置下面会细说: 一 ...

  6. vim学习、各类插件配置与安装

    vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...

  7. 快速掌握Nginx(一) —— 安装Nginx和简单配置虚拟主机

    Nginx安装和简单配置虚拟主机 1 Nginx简介 Nginx是近几年最火热的http.反向代理服务器,百度阿里等互联网公司也都在使用Nginx,它也可以用作邮件代理服务器.TCP/UDP代理服务器 ...

  8. dubbo 图片服务器(FastDFS) redis solr ActiveMQ等简单配置使用

    一.dubbo 项目基于soa的架构,表现层和服务层是不同的工程.所以要实现商品列表查询需要两个系统之间进行通信. 1.1如何实现远程通信? 1.Webservice:效率不高基于soap协议.项目中 ...

  9. centos6和centos7的区别和常用的简单配置优化

    - 本节主要介绍centos6和centos7的区别和常用的简单配置优化:- 第一部分: - 1.对比文件系统 - 2.对比防火墙,内核版本,默认数据库 - 3.对比时间同步,修改时区,修改语言 - ...

随机推荐

  1. pycharm安装激活及简单设置

    (1)在激活界面的License server输入:http://idea.liyang.io/:或者:点击help→Register→License sever ,输入http://idea.liy ...

  2. Oracle EBS 获取完全的值集信息

    SELECT fvs1.flex_value_set_name, fvs1.description, decode(upper(fvs1.longlist_flag), 'N', '值列表', 'Y' ...

  3. jQuery1.7版本之后的on方法

    之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于 live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动 ...

  4. MySQL学习分享--Thread pool实现

    基于<MySQL学习分享--Thread pool>对Thread pool架构设计的详细了解,本文主要对Thread pool的实现进行分析,并根据Mariadb和Percona提供的开 ...

  5. SQL Server 常用数据类型

    char:    固定长度,存储ANSI字符,不足的补英文半角空格. varchar:  可变长度,存储ANSI字符,根据数据长度自动变化. nchar:   固定长度存储Unicode字符,汉字英文 ...

  6. POST请求的forHTTPHeaderField

    POST请求的forHTTPHeaderField 也许你的iOS项目中使用了AFNetworking2.0,或者是ASIHTTPRequest,对于http中POST请求的操作,你用了他们提供的现成 ...

  7. Linux架构之简述企业网站简述

    简述企业网站 用户  --> 负载均衡服务器(Nginx)  ->根据扩展名访问不同的服务区 ->访问数据库 ->返回用户          静态服务器&&动态 ...

  8. Word、rss、HTML解析等dll

    RSS.NET.dll RSS.NET是一款操作RSS feeds的开源.NET类库.它为解析和编写RSS feeds提供了一个可重用的对象模型.它完全兼容RSS 0.90, 0.91, 0.92, ...

  9. (1)List集合 (2)Queue集合 (3)Set集合

    1.List集合(重中之重)1.1 基本概念 java.util.List接口是Collection接口的子接口,该接口中元素有先后放入次序并允许重复 该接口的主要实现类:ArrayList类.Lin ...

  10. REDIS线上问题

    这周终于解决了Redis访问经常超时的问题,终于可以踏实睡觉了.从上周就开始纠结在这个问题上,可以用寝食难安来形容,感觉这个问题就像个定时炸弹一样,虽然根据手搜的访问量,极少的Timeout Erro ...