22. Vim编辑器
- Date:
2018-09-02
- Vim有4种模式
正常模式
命令模式
编辑模式
末行模式
- 模式说明:
- 正常模式
用vim打开文件首先进入的就是命令模式,此时可以通过
i或者a等按键进入编辑模式(插入模式)此模式下输入
:进入命令模式。此模式下可以通过快捷键移动光标位置,然后通过快捷键复制/粘贴指定一行/多行。
- 编辑模式
编辑模式有的人也称这种模式叫插入模式。此模式下屏幕左下角有
-- INSERT --提示信息。此时可以通过键盘输入内容到编辑的文件。
从正常模式进入编辑模式的方法是:输入
i或者a其他方法略过。退出编辑模式按键
Esc
- 命令模式
进入命令模式的方法只能通过正常模式然后按键
:进入命令模式。此模式在屏幕左下角有:此模式可以通过正则匹配替换文件内容或者保存文件/文件另存为 等操作。
22.1. 模式转化详解
- 输入模式–> 末行模式:
ESC
编辑模式–> 输入模式:
a |
从光标当前字符位置后面一个字符的位置插入。 |
A |
从光标所在行的行末尾插入。 |
o |
在光标所在行下面插入一行空行,并从空行的开始输入。 |
O |
从光标所在行上面插入一行空行,并从空行的开始位置输入。 |
i |
从光标的当前位置输入。 |
I |
从光标所在行的开始位置开始插入内容。 |
- 编辑模式–> 末行模式:
ESC
- 末行模式–> 编辑模式:
ESC
22.2. 命令模式-退出文件
命令 |
作用 |
:q |
退出 |
:w |
保存 |
:wq |
保存退出 |
:x |
保存退出 |
:wq! |
保存退出 |
:w new_file_path |
保存到指定的文件 |
22.3. 命令模式-光标移动(快捷键)
字符间移动
h |
光标左移动一个字符,作用和 |
l |
光标右移动一个字符,作用和 |
j |
光标向下移动一行,作用和方向的 |
k |
光标向上移动一行,作用和方向键的 |
单词之间移动
w |
光标向右移动一个单词,移动到下一个单词的开始位置 |
e |
光标向右移动一个单词,移动到下一个但是的末尾 |
b |
光标向左移动一个单词,移动到上一个单词的开始位置 |
行内移动
^ |
即 |
0 |
光标移动到行的起始位置和 |
$ |
即 |
句子内移动
( |
光标移动到句子的开始,有时候也是段首 |
) |
光标移动到句子的末尾。 |
段落内移动
{ |
光标移动到段首位置 |
} |
光标移动到段尾位置 |
行间移动
#G |
其中的 |
G |
光标移动到文件最后一行的开始位置。 |
gg |
光标移动到文件起始位置(即第一行的起始位置) |
22.4. 正常模式-Vim的编辑命令
x |
删除所在位置字符 |
#x |
删除后续几个字符 |
d |
删除命令,配合移动字符 |
dd |
删除行 |
p |
粘贴 |
y |
复制 |
Y |
复制当前行 |
c |
修改,配合移动字符 |
u |
撤销之前操作 |
22.5. 正常模式-Vim可视化模式
v |
光标走过的字符 |
V |
光标走过的行 |
22.6. 正常模式-翻屏操作
ctrl+f |
文件尾部翻一屏(当前页倒数第二行成为首行,光标在一页的开始位置) |
ctrl+b |
文件首部翻1屏(当前页第二行成为最后最后一行,光标在一页的最后一行的开始) |
ctrl+d |
文件尾部翻半屏(向后),位置不变。 |
ctrl+u |
文件首部翻半屏(向前) |
22.7. 命令模式-Vim末行模式
22.7.1. 内容定界
小技巧
在正常模式输入 : 然后再输入下面表格中的内容然后回车即可。
startpos,endpos
# |
第#行(掉转到第#行的开始位置) |
#,# |
第#到第#行(光标跳转到第二个行号的起始位置) |
. |
当前行(光标跳转到当前行行首) |
$ |
最后一行(光标跳转到最后一行的起始位置) |
% |
全文(和$基本一样) |
22.7.2. 命令模式-查找
小技巧
在正常模式下,输入 / 或 ? 进入对应的搜索的状态然后输入要查找的字符串即可。
/pathern |
正向查找 |
? |
反向查找 |
22.7.3. 命令模式-查找并替换
注意
s/查找模式/要替换的内容/修饰符
- 修饰符:
i 忽略大小写
g 全局替换
提示
一般常用g,即全局替换,例如: s/abc/test/g 把文件中所有的abc替换成test,这里面区分大小写。
22.8. 多文件模式
vim可以同时打开多个文件并在当前屏幕显示。
:next |
下一个文档 |
:previous |
前一个文档 |
:last |
最后一个文档 |
:first |
第一个文档 |
:waall |
保存所有 |
22.9. 窗口属性设置
:set nu |
显示行号 |
:set nonu |
关闭行号显示 |
:set ai |
打开智能提示 |
:set noai |
关闭智能提示 |
:set ic |
忽略大小写 |
:set noic |
关闭忽略大小写 |
:set sm |
括号匹配 |
:set nosm |
关闭括号匹配 |
:syntax on |
语法高亮 |
:syntax off |
语法高亮关闭 |
:set hlsearch |
高亮搜索 |
:set nohlsearch |
关闭高亮搜索 |
22.10. vi打开文件即显示行号
CentOS6在用户家目录创建一个.vimrc文件,然后把 set nu 追加到这个文件即可。然后打开文件就会自动添加行号,
注意
如果不想显示行号,在命令模式输入:set nonu
1[root@zzjlogin ~]# ll .vimrc
2ls: cannot access .vimrc: No such file or directory
3[root@zzjlogin ~]# echo 'set nu'>> .vimrc
4[root@zzjlogin ~]# ll .vimrc
5-rw-r--r--. 1 root root 7 Apr 18 19:13 .vimrc
22.11. vi打开文件tab用4个空格替换
在用户家目录的 .vimrc 文件添加内容:
1set ts=4
2set expandtab
则可以在vi打开文件后插入模式下输入tab键,会用4个空格代替这个制表符。
- 对于已保存的文件,可以使用下面的方法进行空格和TAB的替换:
- TAB替换为空格:
:set ts=4 :set expandtab :%retab!
- 空格替换为TAB:
:set ts=4 :set noexpandtab :%retab!
1[root@zzjlogin ~]# echo "set ts=4">>.vimrc
2[root@zzjlogin ~]# echo "set expandtab">>.vimrc