vim软件是一个文本编辑器,类似windows下的记事本,但要比windows下的词事本强大的多。
vim是linux/unix上最常用的文本编辑器,它的作用是建立,编辑,显示文本文件 。
vim没有菜单,只有命令。
vim的学习方法:练习,再练习,让命令形成自然习惯。
1. vim的模式
- 命令模式
- 插入模式
- 编辑模式
1.1 命令模式:
命令模式下,输入的字符都当命令对待。
vim
vim filename
命令行下输入 vim
或 vim filename
这样会打开vim。 vim filename表示用vim软件编辑file文件。
启动vim之后默认就是命令模式。
直接输入vim启动,会出现版本等信息,但用 vim filename编辑文件时不会出现此界面。
如果在其它模式下,想要回到命令模式,按一下ESC键:
1.2 插入模式
在命令模式下切换到插入模式,可以用下面的三个命令:
- i 切换到插入模式,在光标所在字符前插入
- a 切换到插入模式,在光标所在字符后插入
- o 切换到插入模式,在光标下面插入一个空行。
进入插入模式后,输入的字符都被看成普通字符,此时和windows记事本没啥区别了。 上面iao描述了进入插入模式,您可以试一下。
1.3 编辑模式
在命令模式下输入 :
之后进入编辑模式。
编辑模式下可以对vim工具进行设定,比如添加行号,设置自动对齐,设置快捷键等。
在编辑模式下输入:
set number
回车之后vim会显示行号,而且自动回到命令模式。
命令 | 作用 |
---|---|
:set number | 显示行号(编辑模式) |
:set nonumber | 取消行号(编辑模式) |
2. 插入
以下命令(字符)按完之后,直接进入插入模式,但进入的同时会有不同的行为。
命令 | 作用 |
---|---|
a | 在光标所在字符后插入 |
A | 在光标所在行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行首插入 |
o | 在光标下面插入新行 |
O | 在光标上面插入新行 |
小写和大写是有区别的。学习vim要强化练习,让这些命令形成习惯,像键盘练习那样,形成条件反射。
3. 定位
命令 | 作用 |
---|---|
h | 光标左移(同光标键:left) |
l | 光标右移(同光标键:right) |
k | 光标上移(同光标键:up) |
j | 光标下移(同光标键:down) |
gg | 光标移到第一行 |
G | 光标移到最后一行 |
nG | 光标移到第n行 |
:n | 光标移到第n行(编辑模式) |
$ | 光标移到行尾 |
0 | 光标移到行首 |
^ | 光标移到行首 |
ctrl+f | 下一页 |
ctrl+b | 上一页 |
0与^的区别是:^移到行首的第一个字符位置(非空白),而0移到真正的行首(包括空白)。
4. 删除命令
命令 | 作用 |
---|---|
x | 删除光标所在处字符 |
nx | 删除光标所在处后n个字符,就是重复n次x命令 |
dd | 删除光标所在行 |
ndd | 删除光标所在行开始的n行,就是重复n次dd命令 |
dw | 删除一个单词 |
dG | 删除光标所在行到行尾 |
dgg | 删除光标所在行到行首 |
D | 删除光标所在处到行尾 |
d$ | 同上 |
:行n, 行m d | 删除n-m行(编辑模式) |
5. 选择,复制和剪切命令
命令 | 作用 |
---|---|
v | 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。 |
V | 从光标当前行开始,光标经过的行都会被选中,再按一下V结束。 |
yy | 复制光标所在行 |
nyy | 复制当前行以下n行 |
y$ | 复制到行尾 |
yw | 复制一个单词 |
dd | 剪切当前行(上面的删除就是剪切行) |
ndd | 剪切当前行以下n行 |
p(lower) | 粘贴到当前行的下行 |
P(upper) | 粘贴到当前行的上行 |
6. 替换和取消命令
命令 | 作用 |
---|---|
r | 取代光标所在处字符,按r,再输入正确的字符 |
R | 从光标所在处开始替换,按ESC结束 |
u | 撤销一步 |
ctrl+r | 重做 |
7.搜索和替换命令
命令 | 作用 |
---|---|
/string | 搜索指定的字符串,按n,N跳到下一个或上一个string |
:% s/old/new/gi | 搜索old,替换成new,g表示全局,i表示忽略大小写(编辑模式) |
:n1,n2 s/old/new/gi | 同上,但只限于在n1~n2这些行之间搜索。 |
在搜索时可以高亮显示搜索到关键字
命令 | 作用 |
---|---|
set hlsearch | 高亮 |
set nohlsearch | 去掉高亮 |
替换时:
- %表示所有行,如果没有%则只对当前行进行替换。
- g表示全部替换,比如当前行有10个v,要替换成x,没有g的情况下只替换第一个匹配的,有g全替换
- 与%相对应的:n1,n2 表示指定范围的行,即在n1~n2范围内的行。
8.保存
命令 | 作用 |
---|---|
:w | 保存修改 |
:w filename | 另存为 |
:wq | 保存并退出,也可以用快捷键ZZ |
:q! | 不保存退出 |
:wq! | 强制保存并退出,只有文件所有者和root可以 |
9. 导入文件
在编辑模式输入:
:r /etc/os-release
把/etc/os-release文件的内容导入到当前文档中,入到光标所在的位置。
10. 运行命令
在编辑模式下输入:
:!whereis ls
!后面跟上命令。 此例执行了whereis ls命令。 这种方式在不退出vim的状态下执行命令。
11. 把命令的结果导入到vim中
在编辑模式下输入:
:r !ls /
把ls /命令执行的结果,导入到当前vim编辑的文档中。
12. 定义快捷键
在编辑模式下输入:
:map ^P I#<ESC>
这里面定义ctrl+p快捷键,分三部分:
- map
- 快捷键
- 自定义命令
I就是我们在命令模式下按I的操作,表示光标跳到行首并进入插入模式,之后输入#,之后按ESC键回到命令模式。
执行这个快捷键时: 相当于在光标所在行,按下I,之后输入#,之后按下ESC回到命令模式。
注意:^P的输入方法是:ctrl+v, ctrl+p。
13. 在编辑中替换
比如:输入mymail回车或空格,自动替换成 myccloves@163.com
:ab mymail myccloves@163.com
14. 写入配置文件
我们会发现重启vim,定义的快捷键都没有了,解决的方法是写入配置文件。
在家目录创建.vimrc文件,把一些常用的配置写到这个文件里,比如:定义的行号,快捷键,替换等。
当启动vim时会自动运行此文件,相当于在vim中重新输入了一遍这些命令:
set number
set hlsearch
map ^P I#<ESC>
ab mymail myccloves@163.com
常用的配置:
" 设置C/C++方式自动对齐
set autoindent
set cindent
set smartindent
" 设置tab宽度
set tabstop=4
" 设置自动对齐空格数
set shiftwidth=4
" 设置编码方式
set encoding=utf-8
" 设置打开文件的编码格式
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
" 开启语法高亮
syntax on
" 设置取消备份,禁止临时文件生成
set nobackup
set noswapfile
" 设置搜索高亮(hlsearch)
set hlsearch