更多精彩内容,请关注微信公众号:后端技术小屋
30 分钟入门 Vim
Vim 是从 vi 发展出来的一个文本编辑器,是 Linux 后端开发人员必会工具之一,被广大码农戏称为编辑器之神(神之编辑器是 Emacs,笔者没用过,看起来段位比 Vim 更高)。本文简单介绍 Vim 中不同的模式以及每个模式下的高频命令,希望能够引领初学者快速入门。
Vim 的模式
Vim 中有多种模式,这种独特的设计容易让很多初学者产生混淆。仅通过键盘,便可在 Vim 的多种模式之间自由切换。
普通模式
Vim 启动之后的默认模式是普通模式,这一点与大多数编辑器正好相反(默认是插入模式)。在这种模式下,用户可执行移动光标、删除文本等操作。例如跳转到第 n 行,删除第 n 行数据。
插入模式
在这个模式中,大多数按键都会向当前光标处插入文本。
选择模式
选择模式与 Windows 下用鼠标选中某一段文本相似。Vim 的独特之处在于,只需要通过按键即可选中某一段文本。
命令模式
在命令模式下,可以输入 Vim 命令并由 Vim 执行。通常在这种模式下执行搜索、替换、保存文件、退出文件等命令
模式之间的切换
- 插入模式下,输入"Esc",进入普通模式
- 普通模式下,输入"i"(或"a", "o" 大小写皆可,但是有不同的含义), 进入插入模式
- 普通模式下,输入":"(或"/", "?", "!"),进入命令模式
- 普通模式下,输入"v"(或"V"),进入选择模式
Vim 常用命令
文件导航
在普通模式下,可执行以下命令可使光标快速到达目标处:
gg 跳转到当前文件第一行
G 跳转到当前文件最后一行
<n>% 跳转到当前文件的 n%处
^ 跳到光标当前行的开始
$ 跳到光标当前行的结尾
f <char> 跳转到当前行光标后第一个<char>的前一个位置
* 光标所在处单词高亮,并跳转到下一个相同单词处
# 光标所在处单词高亮,并跳转到上一个相同单词处
% 跳转当前光标处括号("[", "{", "(")相配对的括号
{ 跳转到当前段落的开头
} 跳转到当前段落的结尾
( 跳转到当前句子的开头
) 跳转到当前句子的结尾
[[ 跳转至上一个函数 /类(要求 C++代码中'{'必须单独占一行)
]] 跳转至下一个函数(要求同上)
CTRL + O 跳转到历史光标位置列表的前一个位置处
CTRL + I 跳转到历史光标位置列表的后一个位置处
mx 设置书签,x 只能是 a-z 的 26 个字母
`x 跳转到书签处
zR 展开代码折叠
文件编辑
在普通模式下,可执行以下命令对文件进行编辑
x 删除光标位置的字符
dw 删除光标位置的单词
dt<char> 删除光标之后到第一个字符<char>中间的所有文本(不包括<char>)
dd 删除当前行
<n>dd 删除 n 行
dgg 删除文件第一行到当前行的所有文本
dG 删除当前行到文件最后一行的所有文本
>> 当前代码行增加缩进
<< 当前代码行减小缩进
n>> 对 n 行增加缩进
n<< 对 n 行减小缩进
= 格式化当前行代码
r<char> 对光标位置的字符进行替换,新字符为<char>
yy 将当前行复制到缓冲区
<n>yy 复制 n 行到缓冲区
p 将缓冲区复制到下一行
P 将缓冲区复制到上一行
J 将下一行文本合并到当前行
o 在光标下一行增加一空行, 光标跳转至空行开头,并进入插入模式
O 在光标上一行增加一空行, 光标跳转至空行开头,并进入插入模式
文本选择
在选择模式下,可执行以下命令进行文本选择
v 按 v 进入行选择模式,接着按 Up 或者 Down 键选择多行
V 按 V 进入列选择模式,接着按 UP 或者 Down 键选择行范围,按 Left 或 Right 键选择列范围。
当选中了目标文本之后,我们便可对选中文本进行复制(y 与 p 组合)、删除(d)、改写。
文本搜索与替换
在命令模式下,可执行以下命令对文本进行搜索和替换
/<keyword> 文件中向下搜索<keyword>
?<keyword> 文件中向上搜索<keyword>
n 如果使用`/<keyword>`搜索,跳转到匹配列表的下一个位置;否则跳转到匹配列表的上一个位置
N 如果使用`/<keyword>`搜索,跳转到匹配列表的上一个位置;否则跳转到匹配列表的下一个位置
/c<keyword> 文件中搜索<keyword>,忽略大小写
:s/keyword1/keyword2/g 将文件中的 keyword1 全部替换成 keyword2
:1,100s/keyword1/keyword2/g 将文件中 1 到 100 行的 keyword1 全部替换成 keyword2
:1,100s/keyword1/keyword2/gc 将文件中 1 到 100 行的 keyword1 替换成 keyword2,针对每次替换显示确认对话框
:!<bash command> 退出 vim 窗口后执行 bash 命令,再返回 vim 窗口
:%!xxd 以十六进制查看文件内容
:%!xxd -r 恢复原状
:set fileencoding 查看当前文件编码
:goto <offset> 跳转到文件中偏移量为<offset>的位置
一些常用的组合操作
格式化代码
ggvG= 格式化文件中所有代码
在文本中插入一列
V 首先按 V 进入列选择模式,然后通过 Left/Right, Up/Down 选择插入列的位置
I 按 I 进行插入模式,然后输入文本 abc,可看到所有行都插入了一列 abc
多行复制
v 首先按 v 进入行选择模式,然后通过 Up/Down 键选择多行
y 将选中的多行复制到缓冲区中
光标跳转到要粘贴的位置
p 将缓冲区中的多行复制到光标位置
将某列文本转化成大写 /小写
V 按 V 进入列选择模式,然后通过 Left/Right, Up/Down 选择插入列的位置
U 按 U 将选中的一列文本转化为大写;按 u 则将其转化为小写
推荐阅读
- STL 源码分析--vector
- zookeeper client 原理总结
- redis 实现分布式锁
- 推荐几个好用的效率神器
- C/C++关键字之 restrict
- 现代 C++之右值语义
- Python 乱码九问
- Linux Shell 脚本攻略读书笔记
- 30 分钟入门 GDB
更多精彩内容,请扫码关注微信公众号:后端技术小屋。如果觉得文章对你有帮助的话,请多多分享、转发、在看。
