我的Vim学习之路

  1. Vim背景说明
  2. Vim之生存
  3. Vim之配置
  4. Vim之界面与选项
  5. Vim之按键
  6. Vim之插件

在此文中,我会讲述我学习使用Vim的过程。
在此文中,我会告诉你在Vim中先去学什么,再去学什么,而不是罗列一堆配置代码或是总结一堆按键功能。


Vim背景说明

大多数与代码打交道的人,在某个时候看到类于似“两个神器Vim,Emacs”的介绍后,会开始尝试Vim或是Emacs。在使用Vim或Emacs之前,一般或多或少会接触到各种编程语言的IDE或编辑器,如VS,PyCharm,Eclipse啦,如Notepad++,Ultraedit啦。

  • 现在来说一说第一个背景,到底是使用Vim还是Emacs。
    Vim和Emacs的“争论”和“比较”已经很多了,这里我也不再罗列一堆重复的。我使用Vim的原因只有一点,就是使用Vim时,按键的顺序给人一种行云流水般的感受:任何时候,一只手不需要同时按两个以上的键。当然,这也跟个人的配置有关。

  • 使用Vim是否会比各种专门的IDE或编辑器强?
    总的来说,使用Vim,不会让你觉得在所有方面都会比专门的IDE或编辑器强,但是当你喜欢上Vim或Emacs后,你再用回VS或Notepad++等工具时,你会老想问:VS,Notepad++有没有Vim插件。

  • 怎样学Vim?
    其实就教程而言,有好多“Vim入门”,“Vim配置”之类的教程,有很多是不错的。我觉得学Vim的过程,是不断完善.vimrc的过程,不断的将自己需要的功能放入.vimrc的过程,好吧,其实就是不断的查各种教程的过程。

  • 为什么写这篇文章?
    我想第一次使用Vim的时候,都会很茫然,只知道Vim有很多命令功能,只知道去网上到处查各种教程,但不知道从哪学起。我写这篇文章,就是告诉你应该先去查哪些教程,再去查哪些命令和功能。所以,文中不会写出命令或功能具体用法,也不能让你看了后就将能Vim用得很溜。
    最后,此文是按照我自己学习和配置Vim的过程来讲述的(我的配置文件)。


Vim之生存

初次使用Vim,得学会如何用Vim做到一个编辑器的基本功能,这样才能在Vim中生存下去。

  • 学会Vim三个基本模式(普通模式、插入模式、可视模式)的切换
    当然,还要知道三个基本模式的作用。

  • 学会基本的打开(:e)、保存(:w)、退出(:q)操作:
    其它自行拓展的就是关闭所有,保存所有,强制保存,强制退出之类的。

  • 学会基本的移动:
    移动包括基本移动(hjkl),行内移动(w, b, f, \$, ^等),滚屏移动(C-e/y, C-u/d,C-f/b, zz),行跳转(gg, G),标签(mark)跳转。开始使用Vim的时候,我觉得最不习惯的就是,不用鼠标滚轮后,老感觉“视野”变小了,所以,首先就得学会使用相关命令(滚屏,标签,C-i/o等)来代替滚轮。

  • 学会基本的编辑:
    编辑操作包括插入(iI, aA, oO),复制(y),粘贴(p),剪切(x, d),回退(u),重复(C-r);想再深入一点就是Vim的分屏编辑(split),多窗口编辑(buffer, tab),矩形编辑(C-v),系统剪切板编辑(“+寄存器)。

  • 学会查找(/, ?, *, #)和替换(:s, rR)操作
    查找和替换不是说知道这么个命令就行了,还要学会Vim查找和替换中简单的正则表达式怎样写。

  • 学会使用Vim自身的帮助(:h, :h index)
    当然,如果不想看英文,有一个Vim7.3的中文帮助,还是很不错的。


Vim之配置

可以在Vim中生存,只是让自己适应Vim的过程。对Vim配置,则是让Vim适应自己的过程。配置Vim前得先知道有哪些方面可以配置,下面讲述基本的模块配置。

  • Esc按键
    Esc键用得很频繁,在进行配置之前,最好确定Esc按键在哪。我是将Esc和CapsLock对调。也可以对Esc键进行映射,比如,Vim本身就可以用C-[来执行Esc功能。

  • 平台配置
    如果配一个配置文可以同时适用于Linux、Win、Mac系统,或同时适用于终端Vim、Gui-Vim,就需要考虑平台配置了。其实很简单,知道使用if、has(“unix”)、has(“gui-runing”)等语句就行。

  • 界面与选项配置
    界面主要是视觉方面,比如主题高亮、字符编码等配置。基本形式是 set+option。第一次配置至少把高亮(syntax ),行号(number, relativenumber)配置好。

  • 按键配置
    按键主要就是按键的映射了。所以先要明确映射命令(map, noremap, imap, umap等)的使用。深入一点了解与之联系密切的命令(command, call, execute等)。
    按键配置首先将 “:” 和 “mapleader” 配置好,我的配置如下:

    let mapleader="\<space>"            
    nnoremap ; :
    vnoremap ; :
    
  • 插件配置
    最好使用插件管理器(vundle, vim-plug等)来管理插件配置,插件管理器最好自定义设置插件安装路径。
    值得注意的是,安装完插件后,需要学习一下插件的基本设置和使用,不是安装一个插件就完事了。比如,安装目录管理(nerdtree)后,还需要设置下按键映射,方便使用:

    noremap <leader>te :NERDTreeToggle<CR>
    

最后,文章主体到此可以说是结束了。因为不管是按键配置,还是插件配置,都是长期使用过程中而慢慢添加的。后面相应具体的配置是我自己完善配置的过程,不一定适合每个人,只是起到抛砖引玉的作用。
请记住:是因为有了需求,才需要添加配置;而不是因为添加了配置,才有了需求。




Vim之界面与选项

Vim里面的选项有很多,这里介绍很常用的选项配置。

  • 显示相关
    包括主题、高亮,高亮行、高亮列,行号,折叠,tab宽,折行,字体。。。。
    主题推荐一个网站

  • 编码相关
    包括解码(fileencodings)、内部编码(encoding)、文本格式(fileformat)等

  • 大小写相关(ignorecase, smartcase等)

  • gvim相关
    包括工具栏隐藏等(guioptions)、字体(guifont)


Vim之按键

先说一下我按键映射原则:

Normal模式下使用<leader>代替<C-?>,<S-?>,<A-?>,
Insert模式下map带ctrl,shift,alt的快捷键
尽量不改变vim原有键位的功能定义
尽量一只手不同时按两个键

按键射根据自己的习惯来,且按键不是一次就全部配置好,肯定是在长期使用过程,不断完善按键映射。下面讲述一些我的按键映射:

  • 通过映射消除“一只手同时两个键”
    基本思想就是使用 leader 代替 C-, S-, A-, : 等按键,比如
" 代替 C-
nnoremap vv <C-v>
nnoremap <S-u> <C-r>        " 一只手同时按两个键  映射成  两只手分别按一个键
" 代替 S-
nnoremap <leader>a A
nnoremap <leader>zr zR
" 代替 偏远按键
vnoremap <leader>u ~
" 代替 :
nnoremap <leader>iw :set invwrap<CR>
  • 复制与粘贴
    与通常的习惯相结合,使用C-c, C-v来对系统剪切板(“+y, “+p)进行映射,这也是唯一的几个需要一只手同时按两个键的操作。需要注意的是,矩形编辑就也需要进行映射了,如比映射成 vv。
    对0号寄存器(“0p)进行映射,这样,通过 y 复制的内容,就不会受 d,x 的影响;
    对a~z寄存器(“a~zy和”a~zp)映身,实现快速多内容复制与粘贴。

  • 滚屏操作
    我觉得用单行滚动(C-e/y)代替滚轮最好,而将 C-e/y 映射 C-j/k 更好操作。

  • 行首与行尾跳转
    原来的行首行尾($, ^)跳转不方便,使用 S-h/l 就方便多了,也更好记。

  • 窗口跳转操作
    原来的分屏等操作都是 C-w 开头,影响按键速度,使用 leader-w 就好多了。而对于分屏窗口大小调节,使用 C-left/right/up/down 操作更方便。
    同样,buffer窗口的跳转(:bn, :bp, :b#),使用 leader-bn/p/l 更方便。


Vim之插件

这里就不介绍了,网上已经有很教程图文并茂的介绍了各种插件。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [ yehuohan@gmail.com ]

文章标题:我的Vim学习之路

本文作者:Yehuohanxing

发布时间:2017-07-10, 23:48:41

最后更新:2018-04-03, 23:26:42

原始链接:http://yehuohan.github.io/2017/07/10/杂记/我的Vim学习之路/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录