一、vim简介
1.vim是什么?
vim是Vi IMproved,是编辑器vi的一个加强版。
2.vim的配置文件
Windows系统的配置文件是vim安装目录下的vimrc文件。
Linux系统,RHEL和CentOS的配置文件是/etc/vimrc,Debian和Ubuntu的配置文是/usr/share/vim/vimrc,还可以在自己的家目录下创建属于自己的的配置,例如~.vimrc。
Mac OS X的配置文件是/usr/share/vim/vimrc。
3.vim的四种模式
- 命令模式(command-mode):用来操作文件,例如保存文件、替换文件内容等
- 插入模式(insert-mode):对文件进行编辑和修改
- 可视化模式(visual-mode):高亮对文件进行操作,有两种模式,分为可视化行和可视化块。
- 正常模式(mormal-mode):主要用来浏览文件内容,其它模式的相互跳转,需要在这做中转。
二、vim基本设置
(1)颜色设置
syntax on | 开启代码高亮 |
syntax off | 关闭代码高亮 |
syntax enable | 开启代码高亮 |
(2)搜索设置
set hlsearch | 开启搜索高亮 |
set nohlsearch | 关闭搜索高亮 |
set incsearch | 输入搜索字符串的同时进行搜索 |
set ignorecase | 搜索时忽略大小写 |
(3)用户界面
set showmode | 开启模式显示 |
set ruler | 开启光标位置提示 |
set number | 显示行号 |
set nonu | 不显示行号 |
set cursorline | 强调光标所在行 |
set cmdheight=1 | 命令部分高度为1 |
(4)编辑辅助配置
set autoindent | 自动缩进 |
set noautoindent | 不自动缩进 |
set smartindent | 只能缩进 |
set autoread | 当文件在外部被改变时,vim自动更新载入 |
set showmatch | 显示匹配的括号 |
三、常用状态切换操作
1.正常模式——》插入模式
i | 在当前位置开始插入 |
I | 在当前行的开始位置开始插入 |
a | 在光标的下一个位置开始插入 |
A | 在当前行的结束为止开始插入 |
o | 在当前行的下方另起一行开始插入 |
O | 在当前行的上方另起一行开始插入 |
r | 替换光标位置的字符 |
R | 才当前位置开始一直往后面进行替换,ESC结束 |
2.命令行模式——》退出vim模式
:w | 保存文件 |
:w! | 强制保存文件(有权限的前提下) |
:q | 退出缓冲区(如果有修改则不能退出) |
:q! | 退出缓冲区不保存修改 |
:wq | 保存文件并退出缓冲区 |
:x | 保存文件并且退出 |
:wq! | 强制保存文件并退出缓冲区(有权限的前提下) |
:w <filename> | 另存为名为filename |
:n1,n2 w <filename> | 将n1行到n2行的数据另存为名为filename的文件 |
:x | 如果文件有更改,则保存后退出,否则直接退出 |
注意:所有在vim中进行的操作,在没有进行提交操作之前只是在内存中做的修改,并没有写入的到磁盘文件,数据也并没有被真正的修改。
w是将内存中的文件写入到磁盘文件,q是退出vim的模式,如果没有进行提交,系统是不会允许你退出的,除非强制退出,这就意味着不保存。
x实际就是命令wq或wq!实现的功能,只不过更加的智能。
四、常用的光标移动的操作
1.光标字符操作(以字符为单位)
j | 向下 |
k | 向上 |
h | 向左 |
i | 向右 |
$ | 光标移动到行尾 |
0 | 光标移动到行首 |
^ | 光标移动到行首的第一个非空白字符 |
2.光标词操作(以单词为单位)
w | 光标移动到后一个词的词尾 |
W | 光标移动到后一个词的词尾且忽略标点符号 |
e/E | 光标移动到本单词的词尾 |
b | 光标移动到前一个词的词首 |
B | 光标移动到前一个词的词首且忽略标点符号 |
注意:在Linux文档中,标点符号也要算作是一个单词。
3.光标行的操作
G | 光标移动到文档的最后一行的第一个非空白字符 |
nG | 光标移动到文档的第n行 |
gg | 光标移动到文档的第一行的第一个非空白字符 |
补充:在vim中还有光标段(使用{ }操作)、光标句(使用()操作),但是由于在linux中行、段、句的区分并不是很明确,所以很少使用。
4.光标页操作
Ctrl+f | 向下翻页(Pagedown) |
Ctrl+b | 向上翻页(Pageup) |
Ctrl+d | 向下翻半页 |
Ctrl+u | 向上翻半页 |
H | 光标移动到目前页的第一行 |
M | 光标移动到当前页的中间行 |
L | 光标移动到当前页的最后一行 |
补充:Ctrl+o回到光标的上一个位置
五、编辑相关的常用操作
1.删除操作
dd | 删除光标所在的行 |
ndd | 删除从光标所在行开始向下的n行(包括光标行) |
d1G | 删除从光标所在行开始到第一行的所有行(包括光标行) |
dG | 删除从光标所在行开始到最后一行的所有行(包括光标行) |
d$ | 删除从光标开始到行尾的所有字符(包括光标所在的字符) |
d0 | 删除从光标开始到行首的所有字符(包括光标所在的字符) |
2.复制操作
yy | 复制光标所在行 |
nyy | 复制从光标所在行开始向下的n行 |
y1G | 复制从光标所在行开始到第一行的所有行(包括当前行) |
yG | 复制从光标所在行开始到最后一行的所有行(包括当前行) |
y$ | 复制从光标所在字符开始到行尾的所有字符(包括当前字符) |
y^ | 复制从光标所在字符开始到行首的所有字符(包括当前字符) |
3.粘贴操作
p(小写) | 将粘剪贴板中的数据从光标所在行的下一行开始插入 |
P(大写) | 将粘剪贴板中的数据从光标所在行的上一行开始插入 |
4.撤销与重做
u | 撤销上一个操作 |
Ctrl+r | 重复上一个操作 |
5.替换操作
r | 替换当前字符 |
R | 进入替换模式,一直往后面替换,直到ESC结束 |
cc | 替换光标所在行 |
cw | 替换光标所在的单词 |
6.排版操作
:le<ft> | 光标所在行左对齐 |
:ri<ght> | 光标所在行右对齐 |
:ce<nter> | 光标所在行居中 |
六、多文件与多窗口操作
在linux中,可以使用vim一次打开多个文件,然后一个文件一个文件的进行操作;
当然,也可以使用同时打开多个vim的窗口,同时对多个文件进行操作。
打开一个vim的窗口一般称作为打开了一个缓冲区。
1.单一缓冲区打开多个文件
:files | 目前打开了那些文件 |
:n | 切换到下一个文件,如果文件做了更改必须保存或强制退出 |
:N | 切换到上一个文件,如果文件做了更改必须保存或强制退出 |
:2N | 切换到下下个文件,如果文件做了更改必须保存或强制退出 |
:bn | 切换到下一个文件 |
:bp | 切换到上一个文件 |
注意:bn/bp相对于n/N来说还是在一个缓冲区,n/N是关闭当前的缓冲区,打开另一个缓冲区,中间只是进行无缝操作。
2.同时打开多个vim窗口(多个缓冲区)
:sp [filename] | 横向打开多个窗口(缓冲区) |
:vsplit [filename] | 纵向打开多个窗口 |
Ctrl+w n | 新建一个缓冲区 |
Ctrl+w q | 退出光标所在的缓冲区 |
Ctrl+w j | 光标移动到下一个缓冲区 |
Ctrl+w k | 光标移动到上一个缓冲区 |
Ctrl+w l | 光标移动到右一缓冲区 |
Ctrl+w h | 光标移动到左一缓冲区 |
Ctrl+w v | 左右切割窗口新建缓冲区 |
Ctrl+w s | 上下切割窗口请见缓冲区 |
Ctrl+w o | 使光标所在缓冲区最大化,其它缓冲区隐藏 |