前言
走了一遍VimTutor,并且做了一些记录。
正文
1. 概述
1.1. Vim和Vi的区别
Vim是Vi的升级版本,Vim不仅兼容所有的Vi语法,还加入一些新的特性在里面,如:语法高亮、可视化操作、多平台支持(终端、Windows、MacOS等)。总之,学习好Vi,就学会了Vim。
vim编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及 Linux系统的任何版本,vim编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vim也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
1.2. Vim快捷键练习-VimTutor
VimTutor是Vim的一个内置应用。直接输入以下命令,就可以进入练习。
VimTutor
2. VimTutor - Lesson 1
2.1. 移动光标
移动光标使用h
,j
,k
,l
分别对应左、下、上、右
2.2. 使用Vim编辑
使用vim,使用命令vim FILENAME <ENTER>
2.3. 删除字符
删除当前字符,x
2.4. 添加文字(insert/append)
添加文字分别有向前添加和向后添加,分别为i
和a
。
3. VimTutor - Lesson 2
3.1. 删除文字/行(delete)
dw
,d$
和dd
分别代表,删除一个单词,从当前光标删除至句尾,删除整行。
3.2. 多字移动(word)
[number] w
表示向前移动[nunber]
个字母,例如2w
就是向前移动2个字母;0
为回到行首。
3.3. 一般的command格式
具体格式如下
opeartor [number] motion
operator
表示当前操作,[number]
表示重复的次数,motion
表示涵盖的字符w
为一个单词,$
为直接到行尾。
3.4. 撤销操作(undo)
u
,U
和CTRL-R
分别为撤销之前的一次操作,撤销在此行的所有操作和撤销所有撤销的操作(这个好绕,原文是To undo the undo's)
但是这个CTRL-R
不知道为什么为测试失败
4. VimTutor - Lesson 3
4.1. 剪贴操作(paste)
输入p
能够将刚刚删除的line复制到下一行。
4.2. 替换操作(replace)
输入r
能够将文字进行替换rn
标记为将当前光标的文字替换成"n"
4.3. 修正操作(correct)
输入cw
或者ce
能够将当前光标到文字的末端进行删除,并自动进行插入命令;输入c$
能够将当前光标到行末端进行删除,并自动进行插入命令。
4.4. 修正操作一般格式
和之前的删除一样
c [number] motion
5. VimTutor - Lesson 4
5.1. 快速移动某行
输入CTRL-G
可以确定当前所在的行数,和在整篇文章的什么位置。
输入G
可以快速移动到文章的末尾。
输入gg
可以快速移动到文章的开头。
输入[number] G
可以移动到number
行所在位置。
5.2. 搜索
输入/[word]
可以往后搜索word
。
输入?[word]
可以往前搜索word
。
在输入了/
或者?
之后,输入n
表示前往下一个符合pattern的word,输入N
表示前往上一个符合pattern的word。
输入CTRL-O
返回你上一个地点,输入CTRL-I
返回你最新的地点。
5.3. 括号匹配
输入%
可以与()
,[]
,{}
等符号进行匹配对应的正/反符号。
5.4. 替换
输入:s/[old]/[new]
则会在当前行,替换第一个[old]
变成[new]
。
输入:s/[old]/[new]/g
则会在当前行,替换所有的[old]
变成[new]
。
输入:[number1],[number2]/[old]/[new]/g
则会在行number1
和number2
之间,替换所有的[old]
变成[new]
。
输入:%s/[old]/[new]/g
则会替换全文的[old]
变成[new]
输入:%s/[old]/[new]/gc
则会在替换全文之前,每一次都会做confirmation,确认。(c
的规则同样适用于行)
6. VimTutor - Lesson 5
6.1. 在外部使用Shell命令
当你输入:![command]
的时候,可以允许后面command
跟着外部的命令,例如:!ls
6.2. 将当前vim文件保存
当你输入:w [filename]
的时候,会将当前的vim文件保存至filename
中。
6.3. 选取
当你输入v
的时候,会进入选取状态,如果此刻有字符被你选择,当你输入
d
的时候,这些字符将会被删除:w [filename]
的时候,这些字符将会被保存在filename
中
6.4. 从外部导入文件
当你输入:r [filename]
的时候,文件filename
中的字符将会被导入在当前的vim所编辑的文件中。
6.5. 导入命令行的打印信息
当你输入:r !ls
的时候,将会导入!ls
打印的信息进入到vim所编辑的文件当中。
7. VimTutor - Lesson 6
7.1. 插入
当你输入o
的时候会在当前行后面插入,当你输入O
的时候会在当前行的上面插入。
当你输入i
的时候,会在当前光标前一位插入;当你输入a
的时候,会在当前光标后一位插入;当你输入A
的时候,会在当前行最后面插入。
7.2. 移动光标
输入e
移动到下一个word的后面,输入w
移动到下一个word的最前面。
7.3. 复制
输入y
会复制,输入p
会粘贴出已经复制的内容。可以配合v
进行文字的选取,然后通过y
进行复制,通过p
进行粘贴。
如果要对一整行进行复制,则输入yy
。
7.4. 搜索高亮
输入:set ic
,则会ignorecase
无视大小写。
输入:set is
,则会incsearch
显示partial matches对于搜索的phase。不是很懂。
输入:set hls
,则会hlsearch
高亮search。
输入:set noic
,则会取消ignorecase
。
如果只想使用一次ic
,可以通过这样的方式/ignore\c
。
8. VimTutor - Lesson 7
8.1. 帮助
输入:help [command]
,可以对command
进行查询。在help中可能会开启不同窗口,输入CTRL-W
可以对窗口进行选择,输入CTRL-W j
可以去到下面的窗口,输入CTRL-W k
可以去到上面的窗口。
8.2. Vimrc
创建一个~/.vimrc
去创造你自己的vim吧!
8.3. 补全
首先需要确保Vim不在compatible mode,使用:set nocp
。
输入:e
,紧接着当你输入CTRL-D
的时候,会提示你所有:e
开头的可能的command。当你输入TAB
的时候,会进行补全。
8.4. 退出
当你输入:q
的时候,文件将会退出。但是如果文件未保存则无法退出。
当你输入:q!
的时候,即使文件没有保存,也会强制退出。
总结
文章基本的架构一开始参考的是[1] Vim基本使用方法,后来则是完全跟着VimTutor来走,可能后续会出一篇[1] Vim基本使用方法里面的内容的,但是这篇就暂时是关于VimTutor里面的内容。
参考
[1] Vim基本使用方法
Q.E.D.