vim是一款强大的编辑器,做过Linux c开发的同学应该非常熟悉,java相关的开发人员在Linux修改部署的配置文件等也是经常会使用到vim,本文将vim中常用操作进行整理,供大家参考使用.
进入vim
1.Linux命令行/git bash命令行等终端类工具可直接输入vi filename
回车进入:
2.安装IdeaVim插件后的IDEA编辑区即进入vim操作区.
vim三种模式
输入模式(insert mode)
在输入模式下,用户可输入文本数据
- 在指令模式下,输入指令(`a、i、o、s`等)进入输入模式
指令模式(command mode)
在指令模式下,可进行删除、修改等各种编辑动作.
- 在输入模式&末行模式下,按esc键进入指令模式.
末行模式(Last Line Mode)
在末行模式主要进行一些文字编辑辅助功能,比如字串搜索、替代、保存文件等操作
- 在末行模式,按esc进入指令模式
指令模式下常用指令
进入输入模式
重要度 |
指令集 |
功能 |
*** |
a |
在当前游标之后输入 |
* |
A |
在当前行之末输入 |
*** |
i |
在当前游标之前输入 |
* |
I |
在当前行之首输入 |
*** |
o |
在当前行之下新增一行,并在新增行输入 |
* |
O |
在当前行之上新增一行,并在新增行输入 |
输入结束后,按Esc键退出输入模式
游标移动
重要度 |
指令集 |
功能 |
*** |
h |
向左移动一个字元 |
*** |
l |
向右移动一个字元 |
*** |
j |
向下移动一个字元 |
*** |
k |
向上移动一个字元 |
* |
b |
左移一个单词,至词首 |
* |
w |
右移一个单词,至词尾 |
* |
0 |
移到当前行行首 |
* |
$ |
移到当前行行尾 |
|
+ |
移至下一行的行首 |
|
- |
移至下一行的行首 |
|
H |
移至视窗的第一行 |
|
M |
移至视窗的中间一行 |
|
L |
移至视窗的最后一行 |
|
G |
移至该文件的最后一行 |
|
nG |
移至该文档的第n行 |
|
n+ |
下移n行 |
|
n- |
上移n行 |
|
gg |
回到开头 |
|
Shift+g |
回到结尾 |
视窗移动
重要度 |
指令集 |
功能 |
*** |
Ctrl + f |
视窗下卷一页 |
*** |
Ctrl + b |
视窗上卷一页 |
|
Ctrl + d |
视窗下卷半页 |
|
Ctrl + u |
视窗上卷半页 |
* |
Ctrl + e |
视窗下卷一行 |
* |
Ctrl + y |
视窗上卷一行 |
删除操作
重要度 |
指令集 |
功能 |
*** |
x |
删除游标所在字元 |
|
X |
删除游标前一字元 |
* |
dw |
从游标当前位置开始向后删除一个单词 |
|
db |
从游标当前位置开始向前删除一个单词 |
* |
d0 |
从行首删除至当前游标位置 |
* |
d$ |
从游标当前位置删除至行尾 |
*** |
dd |
删除游标所在行 |
|
D |
同d$ |
修改操作
重要度 |
指令集 |
功能 |
*** |
s |
修改游标所在字元,修改完成后按Esc键结束 |
|
S |
修改整行内容,修改完成后按Esc键结束 |
* |
r |
替换当前游标所在字元 |
* |
R |
进入替换状态,直至按Esc键结束 |
* |
cw |
修改一个单词(从游标位置至词尾) |
|
cb |
修改一个单词(从词首至游标位置) |
* |
cc |
修改整行内容,完成后按Esc键结束,同S |
* |
c0 |
修改行首至游标位置的内容 |
* |
c$ |
修改游标位置至行尾的内容 |
* |
~ |
游标所在字元大小写切换 |
指令重复
在指令模式中,可在指令前面加入一个数字n,则该指令会重复执行n次
重要度 |
指令集 |
功能 |
*** |
nx |
删除n个字元 |
*** |
ndd |
删除n行 |
*** |
ns |
修改n个字元 |
取消/重复前一动作(Undo/Redo)
重要度 |
指令集 |
功能 |
*** |
u |
撤消上一指令的结果 |
*** |
. |
重复上一条指令 |
查找字符串
重要度 |
指令集 |
功能 |
*** |
/字符串 |
从当前游标向后查找该字符串 |
*** |
?字符串 |
从当前游标向前查找该字符串 |
*** |
n |
从当前游标向后查找下一个字符串 |
*** |
N |
从当前游标向前查找下一个字符串 |
查看编辑情况
重要度 |
指令集 |
功能 |
*** |
Ctrl + g |
显示正在编辑的文件名、当前游标所在行数、文件总行数、文件是否被修改 |
括号匹配
重要度 |
指令集 |
功能 |
*** |
% |
定位到匹配的“(”、“)”、“{”、“}” |
末行模式下常用操作
保存与退出
重要度 |
指令集 |
功能 |
*** |
:w |
保存,但不退出 |
*** |
:wq |
保存并退出 |
*** |
:x |
同:wq |
*** |
:q |
退出,如果当前文件没有保存,禁止退出 |
*** |
:q! |
不保存退出 |
*** |
:w file.txt |
将内容保存至文件file.txt中,注意:此时编辑的仍为原文件 |
* |
w! file.txt |
将内容强制保存至文件file.txt中,如文件file.txt存在:w file.txt将禁止执行 |
环境设置
重要度 |
指令集 |
功能 |
* |
:set |
显示已设置的环境状况 |
* |
:set all |
显示所有的环境设置选项 |
* |
:set nu |
显示行号 |
* |
:set nonu |
不显示行号 |
* |
:set ts=n |
设置Tab键的长度为n |
执行命令
以下用具体的数字为例进行介绍,数字表示行数,游标所在行可用“.”代替,文件最后一行可用“$”代替
重要度 |
指令集 |
功能 |
* |
:10,20d |
删除第10行至第20行的内容 |
* |
:10d |
删除第10行的内容 |
* |
:%d |
删除全部内容 |
*** |
:10,20co30 |
将第10行至第20行的内容复制到第30行之后 |
* |
:10,20mo30 |
将第10行至第20行的内容移动到第30行之后 |
*** |
:1,$s/old/new |
将第1行至最后一行中的old替换成new |
*** |
:1,$s/^/new |
将第1行至最后一行的内容前面插入new |
* |
:10 |
将游标移至第10行 |
切换到shell状态
重要度 |
指令集 |
功能 |
*** |
:sh |
切换到shell状态,shell命令行输入exit返回vim |
另附一张vim跳转图供参考
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。