MissingSemester(2)VIM基础操作

Vim 是一个_多模态_编辑 器:它对于插入文字和操纵文字有不同的模式。Vim 是可编程的(可以使用 Vimscript 或者像 Python 一样的其他程序语言),Vim 的接口本身也是一个程序语言:键入操作(以及其助记名) 是命令,这些命令也是可组合的。Vim 避免了使用鼠标,因为那样太慢了;Vim 甚至避免用 上下左右键

模式与简介

vim分为五个常用的操作模式:正常模式,插入模式。替换模式,可视化模式,命令模式。正常模式是最初的模式,也是其它模式下按下ESC返回的模式

在不同的操作模式下,键盘敲击的含义也不同

你可以按下<ESC>(退出键) 从任何其他模式返回正常模式。 在正常模式,键入i进入插入模式R进入替换模式v进入可视(一般)模式V进入可视(行)模式<C-v> (Ctrl-V, 有时也写作 ^V)进入可视(块)模式: 进入命令模式

概念:缓存、标签页、窗口

Vim 会维护一系列打开的文件,称为“缓存”。一个 Vim 会话包含一系列标签页,每个标签页包含 一系列窗口(分隔面板)。每个窗口显示一个缓存。跟网页浏览器等其他你熟悉的程序不一样的是, 缓存和窗口不是一一对应的关系;窗口只是视角。一个缓存可以在_多个_窗口打开,甚至在同一 个标签页内的多个窗口打开。这个功能其实很好用,比如在查看同一个文件的不同部分的时候。

Vim 默认打开一个标签页,这个标签也包含一个窗口。

插入模式

在正常模式下按下i进入插入模式,此时的vim会和传统的文本编辑器拥有一样的操作。按下ESC退出插入模式返回正常模式

命令行模式

在正常模式下键入:进入命令行模式,下面列出了几个常见的命令:

1
2
3
4
5
6
7
8
9
10
11
12
:q 退出窗口 
q!:退出并且取消所有的改动
:w 保存(写入)
:wq 保存并退出
:e {文件名} 打开某个你想要编辑的文件
:ls 显示打开的缓存

:help {标题} 打开某个东西的帮助文档
注意,help的使用是视情况而定的,比如:
:help :w 打开 :w 命令的帮助文档
:help w 打开 w 移动的帮助文档

基础操作与基础命令

移动

基本移动

基本移动:hjkl对于左下上右
对于词的移动:w到达下一个单词,b到达词初,e到达词尾
对于行的移动:0到达行初,而$到达行尾,^会到达第一个非空格字符
对于屏幕的移动:H到达屏幕首行,M到达屏幕中间,L到达屏幕底部
对于页码的移动:C-u上翻,C-d下翻
对于文件的移动:gg移动过至文件头,G移动至文件尾

搜索移动
行数移动:{行数}CR 或者 {行数}G
(CR就是回车键)

配对查找移动:使用%移动到对应的配对符号,比如一对括号
查找:f{字符},t{字符},F{字符},T{字符};f代表查找到对应字符的位置,t则是前一个;小写代表向行尾(右)寻找,大写则是向行首(左)寻找

搜索:/{正则表达式}进行搜索,正则表达式的相关内容见下一篇博客。n向下匹配,N向上匹配;如果想要反向搜索,则使用?而非/

选择模式

使用v,V,Ctrl v来进入普通可视化,行可视化,块可视化
普通可视化根据对光标的控制选择区域,行/块可视化 分别对 行/块 进行操作
进入选择模式/可视化模式 之后,利用移动命令来进行区域的选定

编辑

在普通模式下按下i即可进入插入模式。
如果处于普通模式之下,还有以下的编辑操作:
O / o : 在上方 / 下方 插入一个新的行
d{移动命令}:进行删除,删除的区域由移动命令决定
dw:删除一个单词;d$删除光标到行尾的单词;dd删除一整行
c{移动命令}:效果和使用同d,不过会自动进入插入模式
x:删除光标所在的字符
rx:替换光标处的字符
s:替换字符,相当于x之后再i

u:撤销上一步操作
U:恢复对这一整行的操作
Ctrl r:重做上一步操作
y:进行复制
p:进行粘贴
A:追加文本,会在光标选择处的后方开始插入文本(常用于对一行末尾的编辑)
(复制的时候需要选择复制区域,粘贴则需要确定粘贴位置)

多次操作

可以使用“数字+操作”的方式,重复执行多次任务
3w:向前移动三个单词
5j:向下移动5行
7dw:删除7个单词

修饰语

修饰语可以改变一些名词的“意义”,修饰语有i表示“内部”,以及a表示“周围”
这里例举三个修饰语来展示作用

ci( 改变当 前括号内的内容
ci[ 改变当前 方括号内的内容
da’ 删除一个单引号字符串, 包括周围的单引号

其它

键入 CTRL-G 以显示你在文件中的位置和状态
CTRL-O 使你返回到以前的位置,CTRL-I 回到以后的位置

CTRL+F:往下翻页
CTRL+B:往上翻页

CTRL+E:往下滚动
CTRL+Y:往上滚动

替换:键入 :s/old/new/g 以用’new’替换’old’,而g则代表对本行生效

执行外部命令:先使用:进入命令模式,然后键入!字符,这使得我们可以执行一个外部的shell命令;通过这种方式执行任何的外部命令是可能的,同样可以跟参数

保存改动:要保存对文本作的改动,键入 :w FILENAME,将文件的改动保存至”FILENAME”,如果该文件并不存在,则会新建对应的文件

恢复/合并文件:键入r FILENAME会将FILENAME中的内容从光标位置开始恢复

帮助:vim拥有一个在线帮助系统,按下F1/HELP可以进入帮助模式,键入help <CR>也会有对应效果

-按U将选中内容变大写
-按u将选中内容变小写
-按~将大小翻转

vimtutor

vimtutor 是一个 Vim 安装时自带的教程 , 里面记录了各种常见常用的操作
这里有一个翻译不错的中文版 https://github.com/HanielF/VimTutor