环境
系统:CentOs 7.4
Vim版本:7.4.1099
编辑模式
vim分为三种模式:
1.普通模式(Normal mode)
控制屏幕光标的移动
删除字符或行
复制、粘贴
查找文本
2.插入模式(Insert mode)
输入字符
在命令模式下的命令,作为普通字符被插入到光标当前位置
3.命令模式(Command uhne mode)
替换文本
保存文件
退出程序
模式转换:
vi启动后,进入普通模式
在普通模式下
输入键iIaAoO,进入插入模式
输入键:,进入命令模式
在插入模式下
输入键Esc,返回普通模式
在命令模式下
输入键Esc,返回普通模式
文件操作
vim + filename打开文件,如果文件不存在则会创建文件。
:w | 保存文件 |
:wq | 保存文件并退出 |
:x | 功能与:wq相同 |
:wq filename | 将保存在文件filename中,然后退出 |
:x filename | 功能与:wq filename相同 |
:q | 直接退出,如果未保存且修改会提示 |
:q! | 不保存退出 |
:ZZ | 有修改则保存退出,没有修改则直接退出 |
vim通过普通模式通过以下方式进入插入模式:
i | 在当前光标所在位置插入 |
a | 在当前光标所在位置的右边插入 |
I | 在当前光标所在行的行首插入 |
A | 在当前光标所在行的行尾插入 |
o | 在当前行的下方插入一行 |
O | 在当前行的上方插入一行 |
r | 替换当前光标所在的一个字符 |
R | 从当前位置开始替换,直到按下ESC为止 |
vim通过以下命令方式对光标进行移动:
h | 光标向左移动 |
j | 光标向下移动 |
k | 光标向上移动 |
l | 光标向右移动 |
w | 光标向左移动一个单词 |
b | 光标向右移动一个单词 |
快速移动的快捷键:
0 | 光标移动到行首 |
^ | 光标移动到行首的第一个非空格字符 |
$ | 光标移动到行尾 |
gg | 光标移动到文件的第一行 |
G | 光标移动到文件的最后一行 |
nG | 移动到第n行 |
Ctrl + d | 光标向下移动半页 |
Ctrl + u | 光标向上移动半页 |
Ctrl + f | 光标向下移动一页 |
Ctrl + b | 光标向上移动一页 |
n<Enter> | 光标下移n行 |
vim通过以下方式进行删除:
x | 删除当前光标位置处的字符 |
X | 删除光标位置前一个字符 |
nx | 向后删除n个字符 |
dd | 删除当前行 |
ndd | 向下删除n行 |
dw | 删除当前光标位置处的单词 |
yy | 复制当前行 |
nyy | 复制当前光标所在行及下面n行 |
p | 在当前行的后面粘贴 |
P | 在当前行的前面粘贴 |
J | 将两行连接成一行(删除当前行后面的回车) |
vim通过以下方式撤销命令:
u | 撤销上一次操作 |
Ctrl + r | 重新执行被撤销的操作 |
. | 重复执行前一个动作 |
vim环境设置
:set nu | 显示行号 |
:set nonu | 取消显示行号 |
:set autoindent | 设置自动缩进 |
:set all | 显示目前所有环境参数设置值 |
:nohl | 取消高亮 |
vim查找与替换
/word | 从当前位置开始向后查找word,搜索范围是全文 |
?word | 从当前位置开始向前查找word,搜索范围是全文 |
n | 当前搜索顺序的下一个 |
N | 当前搜索顺序的上一个 |
:s/word1/word2/[gc]或[g] | 将word1替换成word2,g表示在当前行进行全局替换,没有g时表示替换一次,gc表示替换前需要确认 |
:%s/word1/word2/g | 在整个文件范围进行替换 |
:n1,n2s/word1/word2/[gc] | n1、n2为数字,表示在第n1与n2行之间执行替换,n1可以是.,表示当前行,n2可以是$,表示文件的最后一行 |