vim作为在terminal端处理文本的最有名的编辑器,我们总结一下它的一些基本使用方法。
vi 和 vim的区别
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。总的来说,vim比vi更具优势的地方在于:
- 多级撤消:在vi的命令模式里,按 u只能撤消上次命令,而在vim里可以无限制的撤消,几乎等同于windows下的ctrl+z了 。
- 多操作系统支持:vi只能运行于unix中,而vim不仅可以运行于unix,还有windows ,mac等操作系统上。
- 语法加亮:作为一名程序员,我觉得这个效果用处最大了- vim可以对代码进行多颜色的语法加亮。
- 可视化操作:因为vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows, 所以说他“可视化”。
- 对vi的完全兼容:某些情况下,vim可以完全被当成vi来使用。
vim使用
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。简单的说,我们可以将这三个模式想成底下的图标来表示:
命令模式
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i
切换到输入模式,以输入字符。:
切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
在当前行里面有效的移动光标:
fx
:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。tx
:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用)Fx
:和 fx 类似,不过是往回找。w
:光标往前移动一个词。b
:光标往后移动一个词。0
:移动光标到当前行首。^
:移动光标到当前行的第一个字母位置。$
:移动光标到行尾。)
:移动光标到下一个句子。(
:移动光标到上一个句子
在整个文件里面有效移动光标:
Ctrl-F
:向下移动一屏。Ctrl-B
:向上移动一屏。G
:到文件尾numG
:移动光标到指定的行(num)。(比如 10G 就是到第 10 行)gg
:到文件首H
:移动光标到屏幕上面M
:移动光标到屏幕中间L
:移动光标到屏幕下面*
:读取光标处的字符串,并且移动光标到它再次出现的地方。#
:和上面的类似,但是是往反方向寻找。/text
:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n。?text
:和上面类似,但是是反方向。.
:重复前一个动作。
剪切和拷贝:
dd
:删除游标所在的那一整行。ndd
: n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行。yy
:复制游标所在的那一行。nyy
:n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行。p, P
:p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。u
:复原前一个动作。Ctrl+r
:重做上一个动作。
输入模式
i, I
: 进入输入模式(Insert mode):i 为从目前光标所在处输入, I 为在目前所在行的第一个非空格符处开始输入。a, A
: 进入输入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始输入』, A 为从光标所在行的最后一个字符处开始输入。o, O
: 进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在处的上一行输入新的一行。r, R
: 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止。Esc
: 退出编辑模式,回到一般模式中。
底线命令模式
在命令模式下按下:
就进入了底线命令模式。底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。在底线命令模式中,基本的命令有:
:w
: 将编辑的数据写入硬盘档案中。:w!
: 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关。:q
: 离开 vi。:q!
: 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。惊叹号 (!) 在 vi 当中,常常具有强制的意思~:wq
: 储存后离开,若为:wq!
则为强制储存后离开。:! command
: 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如
:! ls /home
即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!- 按ESC键可随时退出底线命令模式。
以下为非常全面的vim命令的键盘图:
Reference: - vi和vim的区别
- vim/vi简易教程
- vim快捷键位图
- vim的基本操作
- vim命令大全