学会Vim对日常运维帮助不少,虽然是课上的笔记,但还是给一些平时最常用的给大家看看:
文件导航
在命令模式下,可执行以下命令使光标快速到达目标出
命令 | 说明 |
---|---|
gg | 文件第一行 |
G | 跳转到当前文件最后一行 |
n% | 跳转到当前文件的n行 |
^ | 跳到光标当前行的开始 |
$ | 跳到光标当前行的结尾 |
% | 跳转当前光标处括号(“[”, “{”, “(”)相配对的括号 |
{ | 跳转到当前段落的开头 |
} | 跳转到当前段落的结尾 |
( | 跳转到当前句子的开头 |
CTRL +O |
跳转到历史光标位置列表的前一个位置处 |
CTRL +I |
跳转到历史光标位置列表的后一个位置处 |
mx | 设置书签,x 只能是 a-z 的 26 个字母 |
`x | 跳转到书签处 |
zR | 展开代码折叠 |
文件编辑
在命令模式下对文件进行编辑
命令 | 说明 |
---|---|
x | 删除光标位置的字符 |
dw | 删除光标位置的单词 |
dd | 删除当前行 |
删除 n 行 | |
dgg | 删除文件第一行到当前行的所有文本 |
dG | 删除当前行到文件最后一行的所有文本 |
>> | 当前代码行增加缩进 |
<< | 当前代码行减小缩进 |
n>> | 对 n 行增加缩进 |
n<< | 对 n 行减小缩进 |
= | 格式化当前行代码 |
yy | 将当前行复制到剪贴板 |
复制 n 行到剪贴板 | |
p | 粘贴到下一行 |
P(大写) | 粘贴到上一行 |
J | 将下一行文本合并到当前行 |
o | 在光标下一行增加一空行,光标跳转至空行开头,并进入插入模式 |
O | 在光标上一行增加一空行,光标跳转至空行开头,并进入插入模式 |
文本搜索与替换
在命令模式下,可执行以下命令对文本进行搜索和替换
/Turka 文件中向下搜索“Turka”
?Turka 文件中向上搜索“Turka”这个词
n 如果使用`/`搜索,跳转到匹配列表的下一个位置;否则跳转到匹配列表的上一个位置
N 如果使用`/<keyword>`搜索,跳转到匹配列表的上一个位置;否则跳转到匹配列表的下一个位置
/\cTurka 文件中搜索Turka,但是忽略大小写
:s/Dangdang/Turka/g 将文件中的“Dangdang”全部替换成“Turka”
:1,100s/Dangdang/Turka/g 将文件中 1 到 100 行的“Dangdang”全部替换成“Turka”
:1,100s/Dangdang/Turka/gc 将文件中 1 到 100 行的“Dangdang”全部替换成“Turka”,但是都会叫你确认
:m,ns/Dangdang/Turka/[iceg]
#i表示替换过程中,忽略大小写;c表示替换过程中要进行交互确认;e用户控制是否显示错误;g表示如果一行中找到多个关键字,则一并替换
:!<bash command> 退出 vim 后执行 bash 命令,再返回 vim,这种改配置就很方便,比如:!systemctl restart tengine
:%!xxd 以十六进制查看文件内容
:%!xxd -r 恢复原状
:set fileencoding 查看当前文件编码
:se nu 显示行号
常用操作组合
#多行复制
v 首先按 v 进入行选择模式,然后通过 Up/Down 键选择多行
y 将选中的多行复制到缓冲区中
光标跳转到要粘贴的位置
p 将缓冲区中的多行复制到光标位置
#格式化代码
ggvG= 格式化文件中所有代码
#将某列文本转化成大写 /小写
V 按 V 进入列选择模式,然后通过 Left/Right, Up/Down 选择插入列的位置
U 按 U 将选中的一列文本转化为大写;按 u 则将其转化为小写