0.目录
1.综述
1.1 三种模式
vim有三种模式:编辑模式、输入模式、末行模式。不同模式下按键意义不同。打开文件后,默认处于编辑模式。
1.2 使用vim打开文件
格式 | 意义 |
---|---|
vim file | 打开文件file,光标出现在第一行行首 |
vim # file | 打开文件file,光标出现在第#行的行首 |
vim /pattern file | 打开file,光标出现在第一个被正则表达式pattern的匹配到的行的行首 |
2.编辑模式下常用操作
2.1 退出
各指令 | 意义 |
---|---|
ZZ | 保存退出 |
2.2 光标跳转与翻屏
指令 | 意义 |
---|---|
w | 跳转至下一个单词的词首 |
b | 跳转至当前或前一个单词的词首 |
^ | 跳转至行首第一个非空白字符 |
$ | 跳转至行尾 |
#G | 跳转至第#行 |
gg | 跳转至第一行第一个字符 |
ctrl + f | 向文件尾部翻一屏 |
ctrl + b | 向文件首部翻一屏 |
ctrl + d | 向文件尾部翻半屏 |
ctrl + u | 向文件首部翻半屏 |
2.2 字符删除、替换:
命令 | 意义 |
---|---|
x | 删除光标所在处的字符 |
#x | 删除光标所在处和其后的共#个字符 |
xp | 交换光标所在处的字符和其后的字符的位置1 |
rCHAR | 把光标所在处的字符替换为CHAR字符 |
2.3 文本删除
可结合光标跳转字符实现范围删除。光标跳转操作很多,就不一一列出了。
指令 | 意义 |
---|---|
d$ | 删除光标所在处到行尾的内容 |
d^ | 删除光标所在处到行首的内容 |
dw | 删除光标所在处到下个单词词首的内容 |
dd | 删除光标所在行 |
文本修改:
指令“c”,用法同删除(d),不同在于删除后进入输入模式。
2.4 文本粘贴
删除的内容暂不会真正删除,会存在缓冲区中,可粘贴至其他位置。
按键 | 意义 |
---|---|
p(小写) | 若缓冲区中为整行数据,则粘贴至光标所在行下方一行;若缓冲区中为非整行,则粘贴在光标后方 |
P(大写) | 若缓冲区中为整行数据,则粘贴至光标所在行上方一行;若缓冲区中为非整行,则粘贴在光标前方 |
2.5 文本复制
类似于删除指令“d”的用法,复制指令为“y”。光标跳转操作很多,就不一一列出了。
按键 | 意义 |
---|---|
y$ | 复制光标所在处到行尾的内容 |
y^ | 复制光标所在处到行首的内容 |
yy | 复制光标所在行 |
2.6 可视化模式
类似于windows下鼠标拖动选中文本。
按键 | 意义 |
---|---|
v | 拖动光标,选中光标经过的字符 |
V | 拖动光标,选中光标经过的行 |
选中后可使用上述的“d”、“y”等进行删除、复制操作。
2.7 撤销操作
按键 | 意义 |
---|---|
u(表示undo) | 撤销之前的编辑操作,默认最多50步 |
ctrl + r | 恢复撤销的内容 |
2.8 文本查找
类似命令less中的查找,但这里的查找支持模式匹配。
按键 | 意义 |
---|---|
/PATTERN | 由光标所在处向文件尾部查找(查找后可使用n、N顺着或逆着查找方向查找下一个,同命令“less”) |
?PATTERN | 由光标所在处向文件首部查找 |
2.9 重复执行操作
按键 | 意义 |
---|---|
. | 再次执行上一步的操作 |
2.10 三种模式切换
2.10.1 编辑模式与输入模式切换
以下均为由编辑模式切换至输入模式,只是光标位置不同。
按键 | 意义 |
---|---|
i(即insert) | 在光标位置前输入字符 |
I | 在光标所在行的行首输入字符 |
a(即append) | 在光标位置后输入字符 |
A | 在光标所在行的行尾输入字符 |
o | 在光标所在行下方新建一行输入字符 |
O | 在光标所在行上方新建一行输入字符 |
输入模式切换至编辑模式,使用“Esc”键
2.10.2 编辑模式与末行模式切换
编辑模式下,使用“:”按键,进入末行模式;“Esc”键转换为编辑模式
3.末行模式下常用操作
3.1 退出
按键 | 意义 |
---|---|
q | 退出,文件未改变时可用 |
q! | 不保存修改,强制退出 |
w | 保存修改。可使用“w file”表示把当前文件保存至file文件,当前文件内容视为未修改,相当于windows中的“另存为” |
wq | 保存退出 |
x | 保存退出 |
3.2 地址定界:
用于选定文本范围。
按键 | 意义 |
---|---|
. | 表示当前行 |
#(“#”为数字,下同) | 指定第#行 |
#,# | 指定行范围,左边为起始行号,右边为结束行号 |
#,+# | 指定行范围,左边为起始行号,右边为由起始行开始,向后偏移的行数 |
“.,#”或“.,+#” | 类似地,也可使用当前行至某行;或由当前行开始,向后偏移的行数 |
$ | 表示最后一行 |
% | 表示全文,同“1,$” |
/PATTERN/ | 选定由光标所在处开始到文件尾部2,第一次出现模式PATTERN的行3 |
3.3 文本编辑
3.3.1 删除、复制、另存、读入
地址定界后跟对应操作指令,即可对选定的范围进行操作(指令同编辑模式):
指令 | 意义 |
---|---|
d | 删除选定的文本 |
y | 复制选定的文本 |
c | 修改选定的文本(即删除指定内容后进入输入模式) |
w file | 把选定的文本另存至文件file中 |
r file | 把文件file中的内容插入至当前文件。可在“r”前指定插入位置 |
3.3.2 查找替换操作
格式:s/要查找的内容/替换为的内容/修饰符
说明:
- 要查找的内容
- 可使用模式。查找到的内容即为符合指定模式的文本。
- 替换为的内容
- 显然,替换为的内容不能使用模式。
- 如果“要查找的内容”中使用了模式并使用了分组符号“()”,则替换为的内容中可引用之,比如\1、\2等。
- 若“要查找的内容”中没有使用分组,“替换为的内容”也可直接引用其匹配到的全部文本,使用符号“&”引用。
修饰符
字符 意义 i “要查找的内容”忽略大小写 g 表示进行全局查找替换。一行中如果匹配到多个符合查找内容的文本,均替换。默认情况则是仅替换每行第一个符合查找内容的文本。
注意:“要查找的内容”中若有“/”,则需注意转义。为避免这种不便,分隔符也可使用其他字符如“@”、“#”等。
显然,查找替换操作也可用于删除,把查到的内容替换为无即可。
4.vim的多文件、多窗口功能
4.1 打开多个文件
vim可同时打开多个文件,格式:vim file1 file2…
vim为全屏幕编辑器,所以其每次显示的只能是一个文件,可在末行模式下输入指令,在打开的多个文件间切换:
按键 | 意义 |
---|---|
next | 切换至下一个文件 |
previous | 切换至上一个文件 |
last | 切换至最后一个文件 |
first | 切换至第一个文件 |
多个文件的退出:
按键 | 意义 |
---|---|
wqall | 保存退出所有打开的文件 |
qall | 退出所有打开的文件 |
wall | 保存所有打开的文件 |
4.2 多窗口显示
同时打开多个文件时,也可使用窗口分割,将它们同时显示出来:
分割方式 | 格式 |
---|---|
水平分割窗口 | “vim -o file1 file2……” |
垂直分割窗口 | “vim -O file1 file2……” |
使用“ctrl + w”进行切换,之后使用方向键,可在各分割窗口间切换。
它也可以实现对单个文件切割为多窗口显示。打开文件后,使用按键“ctrl + w + s/v”,分别为水平和垂直分割4。
5.定制vim的工作特性(各指令均在末行模式输入)
5.1 显示或取消行号显示
命令 | 意义 |
---|---|
set number(可简写为set nu) | 开启显示行号 |
set nonumber(可简写为set nonu) | 关闭显示行号 |
5.2 自动缩进
命令 | 意义 |
---|---|
set ai(意思是auto indent) | 开启自动缩进 |
set noai | 关闭自动缩进 |
5.3 搜索结果高亮显示
在某文件中进行搜索操作后,搜索结果默认是高亮显示,就算关了该文件再打开,上次搜索结果也还是高亮。为避免这个麻烦,可使用命令开启或关闭高亮显示:
命令 | 意义 |
---|---|
set hlsearch(意思是high light search) | 开启搜索结果高亮 |
set nohlsearch | 关闭搜索结果高亮 |
5.4 语法高亮
命令 | 意义 |
---|---|
syntax on | 开启语法高亮 |
syntax off | 关闭语法高亮 |
5.5 搜索时忽略字符大小写
若开启,则进行文本搜索或查找替换时,涉及搜索的操作均忽略文本大小写。
命令 | 意义 |
---|---|
set ic(意思是ingnore case) | 开启忽略大小写 |
set noic | 关闭忽略大小写 |
5.6 vim配置文件
末行模式下的设定,仅对当前vim进程有效。若要永久有效,则需编辑配置文件,分为全局和个人。个人配置文件仅对单个用户有效。
全局配置文件:/etc/vimrc
个人配置文件:~/.vimrc(这个文件或许不存在,需自行创建)
(完)