Vim 入门

Vim 简介:
Vim (注:编辑器之神)是从 vi 发展出来的一个文本编辑器,在程序员中被广泛使用。和 Emacs (注:神的编辑器)并列成为 类 Unix 系统用户最喜欢的编辑器。
.
Vim 的第一个版本由 布莱姆·米勒 在 1991 年发布。最初的简称是 Vi IMitation,随着功能的不断增加,正式名称改成了 Vi IMproved 。现在是在开放源代码方式下发行的自由软件。
协议:
目前, Vim 是按照 Vim 许可证发布的开源软件,这个协议兼容 GPL 。
---- 删改自 维基百科:Vim
Vim 哲学:
Vim 采用模式编辑的理念,即它提供了多种模式,按键在不同的模式下作用不同。
---- 引用自掘金:Vim 简史
Vim 的安装
在大部分Linux发行版中,Vim是默认安装的。
安装Vim,只需要在终端中输入以下命令:
sudo apt install vim
或者
sudo apt-get install vim
----引用自简书:Linux探索之旅 | 第五部分第一课:Vim岂是池中物,宝剑锋从磨砺出
Vim 的用法:
打开文件:
vim [OPTION]... [FILE]...
如果不指定文件则进入以下界面:

vim +2 /etc/passwd ##使用vim打开/etc/passwd文件并且使光标处在第二行
vim PATTERN /etc/passwd ## 使用vim打开/etc/passwd文件并且使光标处在指定模式匹配到的行上
##关于模式请自行查阅正则表达式的相应内容,
Vim 是一种模式化的编辑器, 分为以下 4 种模式:
命令模式(Command Mode):输入相应指令完成文本的编辑
输入模式(Insert Mode):可直接输入字符
末行模式(last line mode):Vim 内建的命令行接口,功能强大
可视化模式:可选定字符通过相应指令执行对选定字符的操作
模式转换:
命令模式 –> 输入模式
i:在所在光标前进入插入模式
a:在所在在光标后进入插入模式
o:在光标所在行下新建一行,并转到插入模式
O;在光标所在行上新建一行,并转到插入模式
I:直接跳到所在行的行首,并进入插入模式
A:直接跳大所在行的行尾,并进入插入模式
输入模式 –> 编辑模式
按下ESC键退回到命令模式
命令模式 –> 末行模式
输入: 进入末行模式
末行模式 –> 命令模式
按下ESC键退回命令模式, 可能有时候需要按两下
关闭文件:
末行模式中:
q:退出
w:保存
q!:强制退出
wq:保存退出
x:保存退出
命令模式下:
ZZ:保存退出
光标跳转:
字符间跳转:
h:左
j:下
k:上
l:右
# COMMAND :指定一次跳转的数量, 例如 3h , 向左跳转 3 个字符
.
单词间跳转:
w:后一个单词的词首
e:当前或下一个单词的词尾
b:当前或上一个单词的词首
#COMMAND:同样可以通过#指定一次跳转的数量
.
行首尾跳转:
^:跳转到当前行的第一个非空白字符
$:跳转到当前行的尾部
0:跳转到当前行的首部
.
行间移动:
#G:跳转到指定行
G:跳转到最后一行
gg,1G:跳转到第一行
.
句间移动:
):下一句
(:上一句
#COMMAND:同样可以通过#指定一次跳转的数量
.
段间移动:
}:下一段
{:上一段
#COMMAND:同样可以通过#制定一次跳转的数量
Vim 的命令模式下的命令:
字符编辑:
x:删除当前光标所在的字符
#x:删除当前光标起始处的#个字符
xp:交换和光标所在字符后的字符的位置
.
替换命令:
r:替换当前光标所在字符
.
删除命令:
d:删除命令, 可结合光标跳转命令使用,来实现范围删除
例如:dw删除一个单词, dG删除当前光标所在行到最后一行
dd:删除整行
D:删除光标当前所在行并保存当前行
#COMMAND:同样可以通过#制定一次跳转的数量
.
粘贴命令:
p:粘贴当前缓存区的内容, 如果缓存区中内容为整行内容,则内容粘贴在当前行的正下方, 否则粘贴至光标的后面
.
复制命令:
y:复制, 工作命令相似d命令
例如:yw复制一个单词
yy:复制整行
#COMMAND:同样可以通过#制定一次跳转的数量
.
改变命令:
c:修改,可以使 命令模式 --> 输入模式
cc:删除行并输入新内容
cw:删除后一个单词,并进入插入模式
ce,c^,c0...操作请自己尝试, 这里不做阐述
其他相关的编辑操作:
v:按字符选定
V:按行选定
选定后结合编辑命令使用
u:撤销之前的编辑
Ctrl+r:撤销之前的撤销
.:重复前一个编辑操作
翻屏操作:
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
查找操作:
/PATTERN:在全文搜索指定模式匹配的字符, 从光标的位置至文件尾部的顺序
?PATTERN:在全文搜索指定模式匹配的字符, 从光标的位置至文件首部的顺序
n:与当前命令同方向, /PATTERN为往后翻
N:与当前命令反方向
Vim 末行模式的操作:
(1) 地址定界
注释:以下命令不加:, 使用前须输入:进入末行模式
start,end
#:具体第#行, 例如2表示第2行
#,#:表示第#行到第#行, 例如2,10表示第2行到第10行
#,+#:表示左侧的#表示起始, 加上右边#表示的行数
.:表示当前行
$:表示最后一行
.,$-1:表示当前行到倒数第2行
%:表示全文, 相当于1,$
/pat1/,/pat2/:从第一个被匹配的pat1行开始,到第一个被匹配的pat2的行结束
使用方法:
后跟一个编辑命令
d:删除
y:复制
w /path/to/somewhere:将范围内的行另存到指定文件
r /path/to/somewhere:在指定位置插入指定文件的所有内容
(2) 查找和替换
地址定界s/要查找的内容/替换的内容/修饰符
例如:替换全文的abc为123 %s/abc/123/gi
要查找的内容:可使用模式匹配
替换为的内容:不可使用模式, 但可以使用\1,\2等后向引用, 还可以使用&符号引用在前面找到的内容
修饰符:
i:忽略大小写
g:全局替换
查找替换的分隔符可替换为其他字符
例如::s/abc/123/g可替换成 :s@abc@123@g
多文件模式:
vim FILE1 FILE2 FILE3...
.
在末行模式下输入以下命令:
firs:第一个
netx:下一个
prev:上一个
last:最后一个
wall 保存所有文件
qall 退出所有
窗口分隔模式:
vim -o|-O FILE1 FILE2...
-o:水平分隔
-O:垂直分隔
在窗口间切换:Ctrl+w+上下左右
单文件窗口分隔:
Ctrl+w,s split 水平分隔
Ctrl+w,v vertical 垂直分隔
定制 Vim 的工作特性:
我们可以通过修改 Vim 的配置文件来达到定制 Vim 的工作特性
配置文件:
全局 /etc/vimrc
个人 ~/.vimrc
末行模式下的配置只对当前vim进程有效
(1) 行号
显示:set number, 简写为set nu
取消显示:set nonumber, 简写为set nonu
(2) 括号匹配
匹配:set showmatch, 简写为set sm
取消:set nosm
(3) 自动缩进
启用:set ai
禁用:set noai
(4) 高亮显示
启用:set hlsearch
禁用:set nohlsearch 简写 set noh
(5) 语法高亮
启用:syntax on
禁用:syntax off
(6) 忽略字符大小写
启用:set ic
禁用:set noic
(7) 获取帮助:
:help
:help subject
----引用自 178Linux: Vim 入门及进阶