Author:haoransun
WeChat:SHR—97
Practice makes perfect
1. Vim 的前生今世
Vi 最初是由 Bill Joy 在 1976 年编码实现的。而 Vim (Vi IMproved) 则是改进的 Vi,由 Bram Moolenaar 在 1991 年开发并发布。Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑器。因其强大的功能和高效的操作,Vi/Vim 也成为众多 Unix/Linux 用户、管理员必须掌握并熟练使用的编辑工具之一。尤其是在没有图形界面的情况下,更是离不开 Vi/Vim。Vi/Vim 命令非常多、用法极为灵活,掌握起来有一定的难度。本文为入门教程,关于 Vi/Vim 各种定制后的功能不在本文讨论范围之列。
2. Vi和Vim
在 Linux 的世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改! 与微软 Windows 系统不同的是,如果你用惯了 Microsoft Word 的话,在 Linux 的文本模式下,会觉得文书编辑程序都没有窗口接口来的直观与方便,那么问题来了,干嘛还要学这个不是很友善和方便的vi编辑器呢?因为:
- 跨平台无所不在。所有的 Unix 和 Linux 系统都会内建 vi 文本编辑器,其他的编辑器则不一定会有而且你无需担心到了其他平台需要学习新编辑器,除了Linux/Mac OS X外Windows系统也都可用。
- 很多个别软件的编辑接口都会主动调用 vi ;
- 可扩展性。你可以只用它来编辑配置文件,也可以将它当做你的开发平台。vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计;
- 程序简单、功能强大、运行飞快
3. 什么是Vim呢?
其实你可以将 vim 视作 vi 的进阶版本,vim 可以用颜色或底线等方式来显示一些特殊的信息。 举例来说,当你使用 vim 去编辑一个 C 程序语言的档案,或者是shell script程序时,vim 会依据档案的扩展名或者是档案内的开头信息, 判断该档案的内容而自动调用该程序的语法判断式,再以颜色来显示程序代码与一般信息。也就是说, 这个 vim 已经是个『程序编辑器』了!甚至一些 Linux 基础配置文件内的语法,都能用 vim 来检查!
简单来说, vi 是老式的文本处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim 则可以说是程序开发者的『程序编辑器』了,就连 vim 的官网也说 vim 是一个『程序开发工具』而不是文本处理软件。 因为 vim 里面加入了很多额外的功能,例如支持正规表示法的搜寻架构、多档案编辑、区块复制等等。
学习 vim 并且它可能会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用。
提示:在 Linux 下,如果以 root 用户登录系统的话,通过 vi 命令打开的 Vim 编辑器往往只加载最基本的功能,像语法加亮着色的功能基本上没有。在 root 用户下使用 Vim 所有功能的技巧是用 vim 命令打开 Vim 编辑器。
4. 如何进入Vim?
可以在终端(不明白什么是终端的,请自行谷歌命令行、终端、shell、bash了解)输入下面的命令:
1 | $vim [filename] |
其中filename
是文件的路径。如果文件不存在,它将为你建立一个新文件。
5. Vim的三种操作模式
Vim编辑程序有三种操作模式,分别称为编辑模式、插入模式 和 命令模式。
编辑模式:用以执行命令,也称为Normal正常模式,也是进入Vim的缺省模式。进入Vim后会直接进入编辑模式(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来操作文本, 也可以使用『复制、剪切、粘贴』来处理文本数据,删除正文和插入新的正文。但是却是无法编辑文本内容的!
插入模式:即 Insert 模式,用来输入文本,就像你用“记事本”一样。进入Vim后会直接进入编辑模式,要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『 INSERT 或 REPLACE 』的字样,此时才可以进行编辑,可以输入字符。而如果要回到一般模式时, 则必须要按下『Esc』这个按键才可退出编辑模式。
命令模式:用来执行冒号命令。在编辑模式下输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中,可以进行保存、查找、替换、显示行号、退出、配置Vim操作等等的动作。
1 | i → Insert 模式,按 ESC 回到 Normal 模式。 |
推荐:
强例推荐使用hjkl键盘移动光标,但不必需,你也可以使用光标键 (←↓↑→)移动。
以 : 开始的命令你需要输入
6. 编辑模式下命令
1. 跳转
1 | k或↑ 上移 |
上面这4个键将光标位置每次移动一行或一个字符 。Vim还提供稍大范围移动光标的命令:
1 | ctrl+f 在文件中前移一页(相当于 page down) |
更大范围的移动:
1 | * 当光标停留在一个单词上,x 键会在文件内搜索该单词,并跳转到下一处; |
在屏幕中找到需要的一页 时,可以用下面的命令快速移动光标:
1 | H 将光标移到屏幕上的起始行(或最上行) |
同样需要注意字母的大小写。H 和 L 命令还可以加数字。如 2H 表示将光标移到屏幕的第2行,3L 表示将光标移到屏幕的倒数第3行。
当将光标移到所要的行是,行内移动 光标可以用下面的命令来实现:
1 | w 右移光标到下一个字的开头; |
2. 查找。搜索匹配
和许多先进的编辑器一样,Vim 提供了强大的字符串搜索功能。要查找文件中指定字或短语出现的位置,可以用Vim直接进行搜索,而不必以手工方式进行。搜索方法是:键入字符 / ,后面跟以要搜索的字符串,然后按回车键。编辑程序执行正向搜索(即朝文件末尾方向),并在找到指定字符串后,将光标停到该字符串的开头;键入 n 命令可以继续执行搜索,找出这一字符串下次出现的位置。用字符 ? 取代 / ,可以实现反向搜索(朝文件开头方向)。例如:
1 | /str1 正向搜索字符串 str1; |
无论搜索方向如何,当到达文件末尾或开头时,搜索工作会循环到文件的另一端并继续执行。
Vim中执行搜索匹配最强大的地方是结合 正则表达式 来搜索,
3. 替换和删除
Vim常规的删除命令是 d、 x (前者删除 行 ,后者删除 字符 ),结合Vim的其他特性可以实现基础的删除功能。将光标定位于文件内指定位置后,可以用其他字符来替换光标所指向的字符,或从当前光标位置删除一个或多个字符或一行、多行。例如:
1 | rc 用 c 替换光标所指向的当前字符; |
其他常用的删除命令有:
1 | d$ 从当前光标起删除字符直到行的结束; |
Vim常规的替换命令有 c 和 s ,结合Vim的其他特性可以实现基础的替换功能,不过替换命令执行以后,通常会由编辑模式进入插入模式:
1 | s 用输入的正文替换光标所指向的字符; |
4. 临时显示行号
如果只是临时显示vim的行号,只须按ESC键退出编辑内容模式,输入“:set number” / “:set nu”后按回车键,就可以显示行号了。行号显示只是暂时的,退出vim后再次打开vim就不显示行号了。
5. 永久显示行号
如果想让vim永久显示行号,则需要修改vim配置文件vimrc。whereis vimrc
如果没有此文件可以创建一个 vimrc
在打开的vimrc文件中最后一行输入:set number ,然后保存退出。再次用vim打开文件时,就会显示行号了。
7. 多区域选择
选中一个起始点后,按 ctrl+v 可以看到左下角出现 区块选择,然后点击上下左右选择即可。按下y即可剪切,按下p粘贴刚才剪切的内容.
在命令模式下输入 :files 可以列出目前这个vim开启到的所有档案。
8. 多窗口分屏功能
1. 分屏启动 Vim
- 使用大写的O参数来垂直分屏
1 | vim -On file1 file2 |
- 使用小写的o参数来水平分屏
1 | vim -on file1 file2 |
注释:n是数字,表示分成几个屏
2. 关闭分屏
- 关闭当前窗口
1 | Ctrl +w c |
- 关闭当前窗口,如果只剩最后一个,则退出Vim
1 | Ctrl +w q |
3. 分屏
- 上下分割当前打开的文件
1 | Ctrl +w s |
- 上下分割,并打开一个新的文件
1 | :sp filename |
- 左右分割当前打开的文件
1 | Ctrl +w v |
- 左右分割,并打开一个新的文件
1 | :vsp filename |
4. 移动光标
Vi中的光标键是h, j, k, l,要在各个屏间切换,只需要先按一下Ctrl+W
把光标移到右边的屏。
1
Ctrl+w l
把光标移到左边的屏中。
1
Ctrl+w h
把光标移到上边的屏中。
1
Ctrl+w k
把光标移到下边的屏中。
1
Ctrl+w j
把光标移到下一个的屏中。.
1
Ctrl+w w `注:也可以按住cntl键,同时按下两次w键`
5. 移动分屏
这个功能还是使用了Vim的光标键,参数是大写的。当然了,如果你的分屏很乱很复杂的话,这个功能可能会出现一些非常奇怪的症状。
向右移动。
1
Ctrl+w L
向左移动
1
Ctrl+w H
向上移动
1
Ctrl+w K
向下移动
1
Ctrl+w J
6. 屏幕尺寸
让所有的屏都有一样的高度。
1
Ctrl+w =
增加高度。
1
Ctrl+w +
减少高度。
1
Ctrl+w -
Vim 入门教程
vim 程序编辑器
http://www.jianshu.com/p/7678a7e6973e
http://www.jianshu.com/p/bcbe916f97e1
http://coolshell.cn/articles/5426.html