使用Vim

开始Vim

  1. 使用编辑器,最主要的目的就是编辑,即使你不愿意使用Vim这类终端编辑器,也会在某时候不得不靠他勉强编辑一些东西,例如中国人Geek们最起码都干过的改Linux Source list
  2. 所以无论你是情愿还是不情愿,当你执行这行命令 vim filename 之后,就算是进入了一个有意思,但又不怎么听话的界面,所以书上学来终是浅,实践才是最重要的。
  3. 首先在家目录 cd ~ 下创建或打开 .vimrc 这个文件,直接执行 vim .vimrc这个命令即可,无论有这个文件还是,没有这个文件都能够正确达到目的。
  4. 进入.vimrc文件之后,在其中追加以下内容(追加就是摁键盘上的i,光标移动暂时用方向键):

    syntax on
    set number
    set cindent
    set autoindent
    set smartindent
    set ruler
    set backspace=indent,eol,start
    set tabstop=4
    set shiftwidth=4
    set encoding=utf-8
    set termencoding=utf-8
    set fileencodings=utf-8,gbk
    set hls
    set laststatus=2
    set list
    set incsearch
    set showmatch
    set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
    set listchars=tab:>-,trail:-
    

    有这些功能开启就够了,也不需要有其他的第三方插件,也不需要再多了,就这样足矣。所以请简单使用Vim

    不想自己复制,手打的,可以去我的Github上下载

先不要问这些命令的意义所在,轻松一点,书读百遍其意自现,工具也一样,一开始这些规矩根本没必要记住,用久了自然就懂了。

  1. 追加完以后,接下来执行一个连贯的操作:
    1. Shift + ; 也就是冒号:
    2. 输入wq
    3. 回车
  1. 成了!接下来就能开心的进入Vim状态了。

直接进阶

  1. 对于编辑器这种东西,我们自然是图个方便快速,不然干嘛不用IDE, (没X-Windows的别打我)
  2. 所以编辑室第一要义:

    1. 记住,i(看好了是,小写的)就是在你光标那里进行插入,别管在光标前插入还是光标后插入,你的方向键还在那里呐!移动啊!(hjkl党放过我)
    2. Esc键就是进入上帝模式,也就是99%的 vim 功能所在的模式里,唯一不在其中的就是你刚刚退出的插入模式
    3. 回顾一下,可以输入内容的模式叫做 插入模式,在上帝模式中摁i进入,想要返回上帝模式,那就是嗯Esc,在你键盘的左上角。
  3. 一般在用编辑器的时候,我们希望的是翻页功能,如果只能一行一行的往下,虽然速度也马马虎虎,但是终究有人不习惯

    1. 很简单
    2. Ctrl + f 向前翻页
    3. Ctrl + b 向后翻页
    4. 有一点歧义,更明白一点的说就是,向前翻页(往文章头部走),向后翻页(往文章尾部走),自己实践一下前面说的这几个操作。

快速回到顶部是什么命令呢? 在上帝模式下连续摁两次 [ 就行了,猜一下回到底部是什么?

  1. 有了插入编辑和翻页,我们已经能满足一般的小需求了,例如看文件内容,稍微修改一点地方。

    1. 但是如果我想快速修改某个地方呢?
    2. 我事先知道那个地方的关键字
    3. 我事先知道在哪一行
    4. 我看到光标附近的某个关键字,想要快速定位到其他地方的这个关键字处
  2. 针对上面的三种情况,一一解答

    1. 我事先知道那个地方的关键字
      • 顾名思义,就是搜索呗:
        1. 上帝模式Shift + ;
        2. 输入 / 斜杠
        3. 再输入你要查找的关键字信息,例如你想要查找 xenial 这个关键字,那最后在下方的命令栏内会看到这些字符 :/xenial
        4. 这时候你摁回车,你会发现,你搜索的关键字都亮起来了,这时候你完成了目标的一大半。
        5. 为什么说一大半,请问你现在要怎么移动到那些高亮起来的地方,方向键移动?太智障了吧。
        6. 一个字母就能实现快速跳转: n,这里的字母n,小写时候向后跳至下一个高亮处,大写的时候就是向前跳,支持循环跳转,也就是说即使你只记得一个方向跳转,最后也能到达你的目的地。
        7. 这一套组合有些长,自己最好实验三次,如果是纯看的客官,你现在就可以保存一下本页面,去干别的了,因为你不自己动手,是绝对记不住的。前面说的知识点,刚好到达人类短时记忆的顶峰。
    2. 我事先知道在哪一行
      • 那很简单啊,就是一个命令而已
      • 在上帝模式下,键盘摁 numbergg
      • 什么意思?就是number就是你要去的行数,gg就是连续摁两下键盘上的小写g
      • 假设你要快速跳转到第231行,进入上帝模式后,在键盘上摁 231gg,行了。就是这么简单。
    3. 我看到光标附近的某个关键字,想要快速定位到其他地方的这个关键字处
      • 这个也很简单,也是一个命令而已
      • 在上帝模式下,确保光标移动到那个关键词语上面(上面这个词后面解释),键盘摁 gd 就行了
      • 你发现,你要查的这个关键字都亮了起来,怎么跳转就不用再说一次了吧。
      • 这个功能简直就是神器。想想函数跳转

上面这个词就是,只要是这个单词里面都可以,例如 hello 这个单词,你光标只要停在 ho 之间的任意一个单词都行,闭区间。

  1. 上面说了哪些命令,来回顾一下:
    • 插入i退出保存:wq
    • 移动: 方向键
    • 向前翻页: Ctrl+f, 向后翻页: Ctrl+b
    • 搜索: :/search-key
    • 跳转指定行: numbergg
    • 快速检索某关键字: gd
    • 有高亮状态时向后跳转: n

所以实际上gg的作用就是跳转,那有没有想过,不加数字直接使用gg是什么效果?猜猜看就能知道一定是跳转的意思。再换大写的GG试试啊。很有意思的

额外补充一个,也是用来快速检索某关键字的,#,用法一样。记不记都无所谓了。

有了这些操作,看一个文件的内容简直就是飞一样,如果你只需要看,少量或者不需要改,那么你根本不用往下看了,这些就足矣。

进阶之后

  1. 回想一下在其他图形编辑器里面,最经常干什么?
  2. 前面我们漏讲了好多最常用的操作,编辑操作
    • 所谓,增删改查,我们只讲了

增删改

  1. 增加可以分为,字符插入粘贴

    • 插入就是前方说的i,后面会讲一个写程序时候很方便的调试方法,和插入有关。
    • 粘贴就比较有意思,也比较有用了,说到粘贴就不得不说剪切
    • 剪切有多个方法dd, 和cc都行,当然我说的都是在上帝模式下进行的操作。
    • 上面说的就是剪切当前行。
    • 和剪切类似的就是复制了yy,代表复制当前行。
    • 那么黏贴是什么,记住这些命令都必须是在上帝模式下使用,黏贴是p
    • 现在你会了快速剪切/复制某一行,并黏贴。
  2. 说完增加,要说说删除了

    • 很简单,在上帝模式下用x就行了,有人说直接进编辑模式不就行了
    • 当然可以啊,你愿意的话,怎么方便怎么来,x的左右就是删除当前光标的字符。一直摁住就是一直删除。
    • 还有一个误区,很多网上的教程说dd是删除,实际上并不是,这是剪切的效果,如果你之前有复制的效果,就被他覆盖了。
    • 当然你也可以用dd或者cc代替删除。
  3. 改,就是替换,这里用一个很经典的例子来说

    1. 如何替换这个文本内的Tab
    2. 因为有时候有的地方的Tab是四个空格,有的不是,我们想统一一下怎么办
    3. :%s/Ctrl+v + Tab/你想替换成什么/g
    4. 解释一下中间那段Ctrl+v + Tab,也就是先摁组合键Ctrl+v,再摁Tab键,你会发现命令栏变成了^I,那就对了。
    5. 最后的完整样子:/%s/^I/ /g,代表我想把Tab键都替换成四个空格。(为了显示效果,我替换成四个@)

高级用法

  1. 搜索某个关键字

    • 假设文件中有一个字符串hello-arntity-is-so-long-in-word,我想查询-arntity-is-so-long, 怎么办?我不想一个字母一个字符输入命令栏啊
    • 这时候就用到了复制功能,和前面的快速复制某行不同,这回是精确复制某些。
    • 在上帝模式下,移动光标到你要选择的词语开头,摁小写的v,移动方向键选择一直到末尾,摁y,这样就将这些文字复制下来了。
    • 你现在可以用p试试是不是复制成功了。
    • 接下来:/Ctrl+r" 回车即可
    • 解释一下: 进去命令栏,先输入一个斜杠/,代表搜索的意思,再摁Ctrl+r,后接一个引号",也就是Shift + '。你会发现命令栏出现了你复制的东西。
  2. 快速注释某些行

    • 需要用到一种叫做块选择的东西,不想懂也行,记住操作
    • 首先找到你要注释的那些行,嗯Ctrl+v进入某个模式,向下选择你需要的行,这时候选择出来的像是一列小方块,这就是正确的。
    • 选择好一个,摁大写的I,在输入你的注释符号,例如C++是两个斜杠//
    • 输完之后,连摁两下Esc,成啦!
    • 想要取消注释怎么办?
    • 自己想想,提示: 块选择之后,用x
  3. 撤销操作

    1. 就是在上帝模式下摁小写的u就行了。
  4. 自动补全

    1. 不必去依赖那些第三方库,是真的安装的很头疼
    2. 自带一个Ctrl+n的补全功能,已经能够满足编程的需求了,别太依赖IDE啊。
  5. 剪切从当前光标到该行末尾

    1. 这个也是使用的很频繁的一个操作
    2. 操作很简单,就是大写的D,随后使用p进行粘贴。

分屏

  1. 实际上不太想记录,因为这个可以由tmux来做,但是还是说一下,有的时候挺方便
  2. splitvsplit是分屏的命令,前者是上下分屏,后者是左右分屏
  3. 使用方法是: split filename
  4. 使用Ctrl + w 在窗口间进行切换

结束语