30分钟入门Vim

更多精彩内容,请关注微信公众号:后端技术小屋redis

30分钟入门Vim

Vim是从vi发展出来的一个文本编辑器,是Linux后端开发人员必会工具之一,被广大码农戏称为编辑器之神(神之编辑器是Emacs,笔者没用过,看起来段位比Vim更高)。本文简单介绍Vim中不一样的模式以及每一个模式下的高频命令,但愿可以引领初学者快速入门。vim

Vim的模式

Vim中有多种模式,这种独特的设计容易让不少初学者产生混淆。仅经过键盘,即可在Vim的多种模式之间自由切换。后端

普通模式

Vim启动以后的默认模式是普通模式,这一点与大多数编辑器正好相反(默认是插入模式)。在这种模式下,用户可执行移动光标、删除文本等操做。例如跳转到第n行,删除第n行数据。bash

插入模式

在这个模式中,大多数按键都会向当前光标处插入文本。微信

选择模式

选择模式与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则将其转化为小写

推荐阅读

更多精彩内容,请扫码关注微信公众号:后端技术小屋。若是以为文章对你有帮助的话,请多多分享、转发、在看。

二维码

相关文章
相关标签/搜索