Ø 简介
本文主要记录 Linux 中文本编辑器 Vim 的使用,包括以下内容:
1. Vim/Vi 简介
2. Vim/Vi 工作模式
3. 其他命令
4. 应用实例
1. Vim/Vi 简介
Vim/Vi 是一个功能强大的全屏幕文本编辑器,是 Linux/UNIX 上最常用的文本编辑器。它的作用是建立、编辑、显示文本文件。
注意事项:
1) Vim/Vi 没有菜单,只有命令;
2) 在多用户编辑同一个文件时,最后一个用户保存时,如果文件已经被改变的话,会给出提示;
3) Vi 文本编辑器有很多的功能,但没必要都去学习,只需学习常用的文本编辑就可以了。
2. Vim/Vi 工作模式
1) 命令模式
命令模式是 vi 编辑进入的默认模式。
1. 定位命令
h(左键) | 左移一个字符 | l(右键) | 右移一个字符 |
k(上键) | 上移一行 | j(下键) | 下移一行 |
0 | 移至行首 | $ | 移至行尾 |
Enter | 移至下行行首 |
|
|
H | 移至屏幕上端 | M | 移至屏幕中央 |
L | 移至屏幕下端 |
|
|
gg | 定位到第一行 | G | 定位到最后一行 |
:n 或 ngg 或 nG | 定位到第n行 |
2. 删除命令
x | 删除光标后的字符 | X | 删除光标前的字符 |
nx | 删除光标后的n个字符 |
|
|
dd | 删除光标所在行 | ndd | 删除光标后的n行 |
dG | 删除光标处到文件末尾的内容 | D | 删除从光标所在处到行尾 |
:n1,n2d | 删除指定范围的行 |
|
|
3. 复制和剪切命令
yy、Y | 复制当前行 | nyy、nY | 复制当前行以下n行 |
dd | 剪切当前行 | ndd | 剪切当前行以下n行 |
p、P | 粘贴在当前光标所在行下或行上 |
|
|
4. 替换和取消命令
r | 取代光标所在处字符 | R | 从光标所在处开始替换字符,按 Esc 结束 |
s | 删除光标所在字符,并进入插入模式 | S | 删除光标所在行,并进入插入模式 |
u | 取消上一步操作(可以取消到文件打开时的状态) | ctrl + r | 取消后再撤回取消 |
U | 取消当前行的所有操作 |
|
|
5. 搜索和替换命令
/string | 向前搜索指定字符串。 搜索时忽略大小写 :set ic; 搜索时匹配大小写 :set noic | n | 搜索指定字符串的下一个出现的位置,N 搜索上一个出现的位置 |
:%s/old/new/g | 全文替换指定字符串,/g表示不确认;/c可以替换前确认 | :n1,n2s/old/new/g | 在一定范围内替换指定字符串,/g表示不确认;/c可以替换前确认 |
说明:替换为空字符可以使用::%s/old//g
6. 替换
r |
| 取代光标所在处字符 | R | 从光标所在处开始替换字符,按 Esc 结束 |
2) 插入模式
插入模式用于编辑文件,使用 I 键进入插入模式,此时会在下方出现" -- INSERT -- "的提示;返回命令模式使用 ESC 键。
1. 插入命令
i | 在光标前插入文本 | I | 在本行开始插入文本 |
a | 在光标后附加文本 | A | 在本行行末附加文本 |
o | 在光标下插入新行 | O | 在光标上插入新行 |
3) 编辑模式
使用":"键进入编辑模式,编辑模式的常用命令:
1. :set number
设置显示行号,或者 :set nu。
2. :set nonumber
取消显示行号,或者 :set nonu。
3. :q
退出,或 :q! 强制退出
4. :w
保存,或 :w! 强制保存。也可以另存为,例如::w /tmp/file1
注意:单独执行 w 命令后后,会创建一个于文件同名的隐藏文件,例如:.plantask。
5. :wq
保存并退出(或者使用快捷键ZZ;强制保存退出使用 :wq!,但是只能是文件的所有者,或者管理员 root。
注意:执行 :wq 无论文件是否改变,都会更新文件的修改时间。
6. :x
写入文件并退出,与 :wq 唯一不同的是,只有当文件真的被修改了,才更新文件的修改时间,否不会更新。
7. :e!
放弃所有修改,从上次保存文件开始重新编辑。
8. :!
在编辑模式下执行任何命令。例如:
:!ifconfig #在编辑模式下查看IP地址
3. 其他命令
ctrl + f / b #向下/向上翻页
ctrl + e / y #向下/向上翻滚
4. 应用实例
1) 导入文件内容
:r /etc/issue #导入 issue 文件中的内容到当前文件中(命令模式下)
2) 同时打开多个文件
vi -o file1 file2 #同时打开两个文件(以垂直方向上下显示)
vi -O file1 file2 #同时打开两个文件(以水平方向左右显示,但是不行?)
说明:使用 ctrl + ww 切换编辑的文件。
3) 在 Vi 中执行命令,格式::!命令,示例:
:!ls -l /learn/services #在 vi 中执行命令
:r !date #导入命令执行结果
4) 定义快捷键,格式::map 快捷键 触发命令,示例:
:map ^P I#<ESC> #定义快捷键 Ctrl + p 在行首添加注释(#)
:map ^B 0x #定义快捷键 Ctrl + b 删除行首的第一个字符(可以用于取消注释)
:map ^E iabeam@mdingdang.com #定义快捷键 Ctrl + e 在光标处插入邮箱
注意:定义快捷键(如:^P)使用 Ctrl + v + p 来完成输入。
5) 连续行注释
:7,11s/^/#/g #在7~11行的行首添加注释(#)
:7,11s/#//g #在7~11行中替换所有的#号
:7,11s/^#//g #在7~11行中取消注释
:1,5s/^/\/\//g #在1~5行中添加 // 的注释,使用"\"转义符
6) 替换
:ab mymail abeam@mdingdang.com #输入 mymail + (空格或回车),自动替换为 abeam@mdingdang.com
:unab mymail #取消 mymail 替换
7) 配置 vi 配置文件 .vimrc
配置 .vimrc 文件后 vi 配置适用于所有文件;
该文件位于每个用户的 home 目录下,默认是不存在的,需要单独创建。
[root@localhost ~]# vi /root/.vimrc
编辑配置内容,例如:
set nu
map ^P I#<ESC>
map ^B 0x
ab mymail abeam@mdingdang.com