OS version: Ubuntu 18.04 LTS
Vim version: 8.0.1453
VI = Visual editor(可视化编辑器),VI 采用了Visual 的头2个母进行缩写。
VIM 编辑器是VI编辑器的增强版 (improved版)。VIM 是 Visual editor improved 的缩写。
说到Vim,一般来说很难掌握,学习成本也很高。因为Vim有模式的概念,而功能又非常丰富,所以比起学习成本等缺点,高效的移动,高效的输入等绝对优势还是很值得我们花时间去学习它。简单总结笔者认为Vim的优点有以下4点:
Vim主要有以下模式。
当然,还有选择模式和Ex模式等其他模式,不过在初学的时候,不知道也不要紧。
模式(mode) | 常用功能 |
---|---|
普通模式(normal mode) | 光标移动、拷贝、粘贴、删除等 |
插入模式(insert mode) | 输入、粘贴、输入补全、词语删除等 |
视窗模式(visual mode) | 区域选择、复制、删除、过滤等 |
命令行模式(command line mode) | 写入、退出、文本查找替换等 |
Vim的切换模式如下图:
Esc
是一个特殊的键,它会把编辑器从任意状态切换会默认的普通模式。除了ESC
以外,我们还可以通过Ctrl-[
、Ctrl-c
、Ctrl-\ + Ctrl-n
来把模式切换到普通模式。但是这并不能说Ctrl-c
和Ctrl-\ + Ctrl-n
就是跟Esc
等价的,具体在那些方面是不一样的,我们下次再说明。
当前模式 | 切换模式 | 键位 |
---|---|---|
普通模式 | 挿入 | i、I、a、A、o、O |
命令行模式 | :、/、? | |
视窗模式 | v、V、Ctrl-v |
操作符(operator)The operators that can be used are
操作符:指修改(c)、删除(d)、拷贝(y)等操作。
动作(motion):Vim documentation: motion
动作:指光标的移动或者定义操作的范围。
比如,如果需要删除光标位置到行尾的文本,因为删除的操作符是 d
,移动到行尾的动作是 $
,组合起来就是 d$
。
文字对象(text object)The objects that can be used are
文字对象:指操作的对象元素。文字对象只能用在操作符或者选择模式之后。
比如,在文字对象 ** iw
** 中,与作为删除操作符的 d
进行组合,只需输 diw
就可以删除一个单词。
重复(repeat)
重复:指单词重复更改。这里所指的修改是指修改文本。
比如,删除一个单词后,只需输入 .
就可以反复执行更改 diw
。重复是强有力的功能,可以减少重复的劳动,所以要积极的使用。
习惯并熟练使用Vim常常需要花一些时间和经历。不过以笔者经历告诉大家,这是值得的。当你习得这一项本领之后,它能够帮助你高效快速的编辑文本或者代码文件,减少不必要的重复工作和键盘移动。
http://vimdoc.sourceforge.net/htmldoc/help.html
Vim有非常强大的帮助文档,这个帮助文档几乎网罗了所有的功能说明。如果想知道操作符有哪些,那么只需要在命令行,也就底线命令行里输入:h operator
就可以呼出相关帮助。
可以使用命令helpg {pattern}或者helpgrep {pattern}
查找所有的帮助文档,匹配的结果以列表的形式表示出来,默认选中第一个匹配结果。比如,:helpg normal mode
,详细说明请参照:help helpgrep
说明。
从上图我们发现只显示了一条匹配项,vim提供了quickfix窗口,在执行vimgrep之类的命令后,结果会显示在quickfix窗口,运行:cw
命令即可呼出此窗口。
与quickfix的指令有:
命令 | 说明 |
---|---|
:cw | 如果有信息列表,则打开quickfix窗口;否则什么也不做 |
:cl | 列出所有信息 |
:cc | 显示详细信息 |
:cp | 跳到上一项 |
:cn | 跳到下一项 |
:copen | 打开quickfix窗口,可添加窗口高度参数,单位为行 |
:cclose | 关闭quickfix窗口 |
:cold[er] | 到前一个旧列表 |
:cnew | 到后一个新列表 |
接下来说明如何安装Vim的中文帮助文档,虽然笔者建议大家熟悉英文的操作环境,在英文环境下编写文档和代码。
(1)在浏览器中输入一下网址,准备语言包下载:
http://vimcdoc.sourceforge.net/
(2)选择“Latest platform independent tarball,including an Linux/BSD installation script”下载。
(3)将命令行切换到下载文件的目录。
cd Downloads/
tar -xf vimcdoc-2.3.0.tar.gz
cd vimcdoc-2.3.0/
source vimcdoc.sh -i
(4)切换语言
在控制台输入以下命令,完成语言的切换。
# 将vim帮助文档的语言切换到中文
vim set helplang=cn
# 将vim帮助文档的语言切换到默认的英文
# vim set helplang=en
(5)验证更改
再次打开Vim在命令行输入:h operator
,可以发现已经变成亲切的中文说明。
Vim的帮助文档的内容非常的多,从什么地方开始学习比较好呢,是很多Vim的使用者想问的。下面是推荐的帮助文档列表供大家参考。
如果您从未使用过Vim,那么笔者建议您从index
开始读起。
Help | Summary |
---|---|
helphelp | 帮助文件之帮助 |
vim-modes | 模式介绍 |
index | 各个模式下所有命令的一个完整列表 |
quickref | 快速参考指南 |
ex-cmd-index | Vim的Ex命令列表 |
function-list | 按用途分类的内建函数列表 |
option-list | 选项列表 |
map-overview | 映射命令与模式的对应表 |
usr_41 | Vim 脚本语言的相关知识 |
eval | Vim 脚本语言的表达式求值 |
上面大致对Vim做了简单的介绍,如果要真正意义上能够使用Vim,下面的必要操作是需要您熟记的。
Vim启动以后是普通模式,那么我们从普通模式开始,学习并掌握光标的移动。
当然您也可以学习Vim的入门课程,在Linux命令中输入vimtutor
进入练习模式。
^
k Hint: The h key is at the left and moves left.
< h l > The l key is at the right and moves right.
j The j key looks like a down arrow.
v
h
:向左移动j
:向下移动k
:向上移动l
:向右移动gg
:移动到文件开头G
:移动到文件末尾{count}G
:移动到指定行、例:11Gi
:移动到在光标前,启动插入模式I
:移动到本行第一个非空白字符之前,启动插入模式a
:光标向右移动一文字,启动插入模式A
: 光标移动到行尾,启动插入模式o
:在光标下方开启新行,启动插入模式O
:在光标上方开启新行,启动插入模式可视模式是进行复杂选择和操作的模式。
在这模式中,可以与操作符组合使用,比如删除选择的部分,复制选择的部分都是可以的。
v
: 进入选择模式,以文字为单位V
:进入选择模式,以行文字为单位Ctrl-v
:以块文字为单位选择下面介绍最基本的命令行操作,请务必熟记并且多多练习。
:w {filename}
把内容写入到文件{filename}中,文件不存在的场合,则会新建文件。:w
保存修改:sav {filename}
另存为{filename}:q
退出Vim:q!
如果有修改:q
不能退出,通过附加!
强制退出:wq
保存修改并退出/{word}
查找{word}:%s/banana/apple/g
用apple替换banana。今天我们学习了Vim的最基本的一些操作,可以满足常规工作的需求。
但这还不是Vim的真正厉害之处,我们下次接着讲Vim的十八般武艺。
我们下次再见。