【太玄的软件推荐003】Vim急速入门

鉴于Vim的特殊地位,这里对Vim的使用做一个非常简短的说明。


把Vim当作Less


Vim是一个全功能的纯文本编辑器,所以当作一个简单的纯文本浏览器使用也是可以的。这一节我们主要介绍如何用Vim来浏览文件。


命令行中用`vim`命令后加文件名打开文件。


用h、j、k、l向左、下、上、右移动光标,^和$用于移动到一行首尾,C-b和C-f用于向上、下翻页。如果你不习惯这些移动命令,使用上下左右方向键,Home,End,PageUp,PageDown也是可以的。


空格键(Space)也可以使光标右移,退格键(Backspace)可以使光标右移(这时不会删除内容)。和h,l的不同之处在于。使用h,l移动时如果顶到行首行尾就没法继续移动。而空格到了行尾会继续移动到下一行行首,退格移动到行首会继续移动到上一行行尾。


为了防止对文件造成修改,只要最后退出的时候使用不保存退出命令`q!`就可以。更为保险的方法是在打开的时候就用只读模式打开。只读模式就是在`vim`后加上参数`-R`:


```shell

vim -R mytext.txt

```


在只读模式下,保存退出命令`wq`无法正常执行,并且会在用户试图保存修改的时候弹出警告。所以相对来说更加安全。


把vim当作记事本


vim有两种主要的编辑模式——normal mode和insert mode。任何时候如果需要转换到normal mode,就按ESC键。一打开vim,默认的模式是normal mode。

图:Vim模式转换图

之前介绍的h,j,k,l作为移动光标的命令,就是在normal mode下生效。


Vim的快捷键


这里我们介绍一些其他的normal mode下的快捷键。


x可以删除光标所在处字符,X则相当于退格。dd用于删除光标所在行。使用删除键(Delete)也可以删除光标所在处的字符。


被删除的内容会进入缓存,相当于Windows的剪贴板。使用p可以在光标后粘贴剪贴板内容。P则可以在光标前粘贴。想复制一行内容到剪贴板,不删除原文,就用yy。


按v键进入visual mode,此时移动光标就可以像拖动鼠标那样随意选择要删除或者复制的内容。选好之后按d删除,按y复制。visual mode就像是normal mode的一个子模式。在visual mode下,所有移动光标的命令和normal mode下一样。执行删除或者复制之后自动回到normal mode,也可以用ESC回到normal mode。


插入模式


用a,i,o,r等命令进入insert mode,在这个模式下,所有的字符按键都不再作为命令快捷键,按下之后就会输入对应字符。具体来说i和a分别在光标前后开始插入,I和A在行首尾开始插入。O和o在光标所在行前后插入空行。R则开启替换模式,这个模式下新输入的字符可以覆盖原有字符。完成一段输入后,按ESC返回normal mode。


一定要注意进入插入模式后,所有字母键都不再作为命令快捷键。在normal mode下连按两下a,就会进入insert mode并且插入一个字符“a”。


在插入模式下,虽然字母对应的光标移动命令不能使,你还是可以使用键盘上的方向键,Home,End,PageUp,PageDown等来移动光标。


在插入模式下,退格键(Backspace)会删除光标左边一个字符,删除键(Delete)会删除光标所在位置的字母。


撤销操作


文本插入和除了移动光标以外的命令都属于编辑行为。normal mode下u可以撤销编辑。而`.`可以重复最近一次的编辑。


如果上次的操作是字符插入。那么一连串连续的字符插入或者删除会被认为是一次操作。而如果一串插入中夹杂了光标移动,那么这一串操作就会被认为被光标移动命令打断为了多次操作。例如你输入了几个字符,(即使没有退出insert mode)然后移动了一下光标,再输入了几个字符。那么当重复的时候,重复的是第二次输入的几个字符


查找和替换


接下来是查找和替换。`/`键打开查找模式,这时可以输入要查找的内容,按Enter键开始查找。N和n用于在上一处查找结果和下一处查找结果之间切换。ESC键返回normal mode。


更多的功能可以通过底端命令行实现。按`:`打开命令行,Enter执行命令。打开命令行后输入行号执行,就可以跳转到目标行。


再介绍一个用于全局替换的命令,这条命令可以把文中的所有“vim”换成“emacs”:


```vim

:%s/vim/emacs/g

```


更多命令行命令


这一部分介绍的都不是快捷键,而是需要输入到命令行中执行的命令。


在命令行中输入,`h`然后回车执行可以打开内置帮助文档。类似还有:`w`表示保存,`q`用于在无修改的情况下退出,`x`表示保存退出,`q!`表示不保存退出。`e`后空格,然后接文件路径则是打开或者新建文件:


```vim

:e ~/HelloWorld.txt

```


把Vim当作Vim


上一部分简介的命令和快捷键只是vim的九牛一毛。更多快捷键不在这里罗列,网上有很多Vim快捷键表。

图:Vim Cheat Sheet for Programmers

>**Vim快捷键表**

>

>* <http://michael.peopleofhonoronly.com/vim/>

>* <http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html>


这一部分介绍一些比较有Vim特色的操作。


如果想要重复一条命令,只需要在按下命令快捷键之前先按下重复次数。例如光标往右移动10格,只要先按1,再按0,然后按j就可以了。


数字不仅仅可以用于表示循环次数。例如11H表示跳转到正数第11行,2L表示跳转到倒数第2行。


有的命令,例如d和y,需要有确切的作用范围才能执行。可以使用visual mode指定其作用范围,也可以在normal mode下先按编辑快捷键再接上光标移动命令为其指定范围。例如删除光标及以后共10个字符,先按d,然后接上10j。当然如果你想的话,还可以在d前头再加上循环次数。例如20d10j就会删掉右边200个字符。注意,visual mode下光标最后停留的位置也在作用域内,而用组合命令的话,光标最后停留的位置不属于作用域。


类似的组合命令用法也可以出现在命令行里。例如把保存退出命令也可以用wq。


这两篇简短的教程只是一个初级示范。更多充满想象力的操作等着你去发掘。


-- --
  • 投诉或建议
评论