前言

走了一遍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)

添加文字分别有向前添加和向后添加,分别为ia

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,UCTRL-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则会在行number1number2之间,替换所有的[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.


立志做一个有趣的碳水化合物