Vim-Vimtutor学习整理
在了解到Vim编辑器的强大的功能后,对于喜爱键盘想要摆脱鼠标的我来说是一个非常大的诱惑。而Vim自带的vimtutor无疑是一个入门的非常好的教程,该教程适合边学边用,很快就能了解最基本的Vim编辑器操作。本文将整理摘录vimtutor中的前六章内容,顺序上做了一定的归纳和调整。 8.24 更新: 补充了在Interactive Vim tutorial中学到的小技巧,因为大部分内容均为基本操作,故不再另外写文整理。 # 第一讲 基本使用
1.1 移动光标
在正常模式(Normal)下(使用h j k l
键进行光标的移动,刚开始觉得这个设定极为反人类,但熟练其操作后会发现这个设定极为巧妙,能更快第在屏幕内四处移动光标。
h
: 光标向左移动; l
: 光标向右移动;
j
: 光标向下移动; k
: 光标向上移动.
小贴士:在所有移动操作前加上g
,就可以实现相对屏幕行进行操作而不是实际行,如gj
。
1.2 VIM的进入和退出
在 Normal 模式下, :q!<Enter>
:
退出编辑器,这种方式将会丢弃所有未写入的改动。
wq<Enter>
: 保存文件并退出。
1.3 文本编辑
在 Normal 模式下, x
: 删除光标所在位置的字符;
X
: 删除光标左侧位置字符; .
:
可重复前一次操作; i
: 在光标所在位置之前插入字符;
a
: 在光标所在位置之后插入字符; A
:
在光标所在行末尾插入字符。
第二讲 删除撤销动作
2.1 动作
动作列表
w
:
从当前光标位置移动到下一个单词起始处,不包括它的第一个字符;
e
: 从当前光标位置移动到单词末尾,包括最后一个字符;
$
: 从当前光标位置移动到当前行末; ge
:
从当前光标位置移动到上一个单词末尾;
b
:从当前光标位置移动到上一个单词开头。
计数指定动作
- 在动作前输入数字会使该动作重复多次,e.g. :
2w
将光标向后移动两个单词3e
使光标移向后移动到第三个单词末尾7perfect <ESC>
将插入7个perfect单词
0
:移动光标到行首
2.2 删除类命令
改变文本的命令通常由一个操作符和一个动作构成: 1
operator [number] motion
1
d [number] motion
dw
:
删除至下一个单词起始处,不包括下一个单词的第一个字符; de
:
删除至当前单词末尾,包括最后一个字符; d$
:
删除至当前行末尾; 删除命令也可以搭配计数删除更多。 dd
:
删除当前行; dd
命令同样可以在之前插入数字进行计数删除多行。
2.3 撤销类命令
u
: 撤销最后执行的命令; U
:
撤销对整行的修改。 CTRL-R
:
撤销以前的撤销命令,恢复之前的操作结果
第三讲 插入替换更改
3.1 插入类命令
p
: 将最后一次删除的内容插入当前光标之后,
类似于剪切功能。 o
:
在光标当前行下方创建新的一行,并进入插入模式; O
:
在光标当前行上方创建新的一行,并进入插入模式。
3.2 替换类命令
r[CHARACTER]
: 输入 r 和一个字符替换光标所在位置的字符
R
:
连续替换多个字符,与插入模式类似,不过每个输入的字符会替代光标当前字符,与键盘使用了
insert 键进入改写模式的情况类似
3.3 更改类命令
1 | c [number] motion |
- c 操作符
cw
: 更改文本直到该单词末尾; ce
:
更改文本直到下一单词开始; c$
: 更改文本直到行末。
更改命令执行后直接进入 insert 模式。
第四讲 定位查找
4.1 定位及文件状态
F[CHAR]
: 光标移动到上一个 char 所指字母所在位置;
f[CHAR]
: 光标移动到下一个 char 所指字母所在位置;
*
: 光标移动到当前光标所指单词相同的下一个位置;
#
: 光标移动到当前光标所指单词相同的上一个位置;
CTRL-g/G
:
显示当前编辑文件中当前光标所在行位置以及文件状态信息; G
:
光标跳转到文件最后一行; gg
: 光标跳转到文件第一行;
G[NUMBER]
: 光标跳转到number表示的行号。
4.2 搜索类命令
/[STRING]
: 正向查找string表示的字符串;
?[STRING]
: 逆向查找string表示的字符串; CTRL-O
N
:回到前一个位置; CTRL-I
n
:
到下一个位置。
4.3 配对括号的查找
使用%
可查找匹配对的括号) \ ] \ }
:
将光标移动到左括号处,按下%
,光标将跳转到匹配的右括号处,再按下一次可跳回原来的左括号处。
(这对程序员来说真是个福音~)
4.4 替换命令
:s/old/new
: 在光标所在行第一次出现的 old
表示的字符串替换为新的字符串 new ; :s/old/new/g
:
在光标所在行替换所有出现的 old 所表示的字符串替换为新的字符串 new ;
:#,#s/old/new/g
: 在两行内替换所有的字符串 old 为新的字符串
new ; :%s/old/new/g
: 在文件内替换所有的字符串 old
为新的字符串 new ; :%s/old/new/gc
:
进行全文替换时询问用户确认每个替换。
第五讲 文件操作
5.1 在VIM内部执行外部命令
:![COMMAND]
: 执行command所代表的外部命令
5.2 保存文件
:w FILENAME
: 将对文件的改动保存到一个文件中;
v motion: w FILENAME
: 将文件的部分内容保存到文件中: v
进入可视模式(Visual), motion
表示光标的移动,可选中文本,按下:后下方将出现'<,'>
,输入w
FILENAME将选中的文本保存在文件FILENAME中。可视选中后同样也可以进行批量删除操作。
5.3 提取合并文件
:r FILENAME
: 提取磁盘文件 FILENAME
并将其插入到当前文件光标当前位置后; :r !command
:
读取command命令的输出插入到当前文件光标当前位置后。
5.4 复制粘贴文本
进入 Visual 模式,
使用y
进行复制,使用p
进行粘贴
文本编辑部分整理至此。
顺便推荐几个网站: * VIM Adventures,这是一个用VIM操作来进行的游戏,不过免费版只能练习最基本的移动操作~ * Interative Vim tutorial,这是一个交互的类似于 vimtutor 的教程网站 * Interative Vim tutorial - sandbox这是上面那个教程网站给出的一个练习,右侧还有命令提示,可以说非常贴心了 * Vim Snake 一个基于Vim移动操作的贪吃蛇游戏
参考资料
- vimtutor
- Interative Vim tutorial
- 《Vim 实用技巧(第2版)》