新入手vim编辑器可以说是非常痛苦了,将各式各样的命令汇总集合一下
特别注意
- CTRL+S 不是保存,而是锁定并无法编辑,CTRL+Q解锁。
- 命令行模式下,中文输入法无法键入命令
三种编辑模式
1.命令模式(ESC)
是vi 的入口
通过命令对文件进行常规操作:定位、翻页、复制、粘贴、删除......
2.末行模式(:)
末行模式是vi 的出口
3.编辑模式(i)
正常的编写和使用vi
末行模式命令:
注意要键入“:”哦
命令 | 单词 | 功能 |
:w | write | 保存 |
:q | quit | 退出,不允许未保存 |
:q! | quit | 强制退出,允许未保存 |
:wq | write&quit | 保存并退出 |
:x | 保存并退出 |
命令模式
重复次数:数字 + 命令 = 重复执行的次数
1.移动(基本)
1) 上下左右
h | left | 左移光标 |
j | down | 右移光标 |
k | up | 上移光标 |
l | right | 下移光标 |
2) 行内移动
w | word | 向后移动一个单词 |
b | back | 向前移动一个单词 |
0 | 行首 | |
^ | 行首,第一个不是空白字符的位置 | |
$ | 行尾 |
3) 行数移动
gg | go | 文件顶部 |
G | go | 文件末尾 |
数字gg | go | 移动到 数字 对应的行数 |
数字G | go | 移动到 数字 对应的行数 |
:数字 | go | 移动到数字对应的行数 |
4)屏幕移动
CTRL+b | back | 向上翻页 |
CTRL+f | forward | 向下翻页 |
H | head | 屏幕顶部 |
M | middle | 屏幕中间 |
L | low | 屏幕底端 |
2.移动(程序)
1)段落移动
vi中使用 空行 来区分段落
在程序开发时,通常 一段功能相关代脉会在一起 -- 之间没有空行
{ | 上一段 |
} | 下一段 |
2)括号切换
() [] {} 使用频率极高,而且都是成对出现的
% | 括号匹配及切换 |
3)标记
在开发时,某一段代码可能需要稍后处理,例如:编辑查看 此时先使用 m 增加一个标记,这样可以 在需要时快速地跳转回来 或 执行其他编辑操作
标记名称可以是 a~z 或 A~Z 之间的任何一个字母
添加了标记的 行如果被删除,标记同时被删除
如果在其他行添加了同名的标记,之前添加的标记也会被替换调
mx | mark | 添加标记 x,x是 a~z 或者 A~Z 之间的任意一个字母,只能是一个字母! |
'x | 直接定位到标记x所在的位置 |
3.选中文本(可视模式)
vi 要选中文本,需要使用visual 命令切换到可视模式,有三种可视模式可供选择
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视行模式 | 选中光标经过的完整行 |
CTRL+V | 可视块模式 | 垂直方向选中文本 |
可视模式下,可以和移动命令连用
4.撤销和恢复撤销
u | undo | 撤销撒上次的命令 |
CTRL+r | redo | 恢复撤销的命令 |
5.删除文本
x | cut | 删除光标所在字符,或者选中文字 nx也是删除多个 |
d | delete | 删除移动命令对应的内容 需要结合移动命令进行 |
dd | delete | 删除光标所在行,可以ndd复制多行 |
D | delete | 删除至行为 |
如果可视模式已经选中了一段文本,那么无论使用 d、x 都可以删除文本
删除命令可以和移动命令连用
6.复制粘贴
vi 中提供一个被复制文本的缓冲区
复制命令会将选中的文本保存在缓冲区中
删除命令删除的文笔也将保存在缓冲区中
在需要位置,使用粘贴命令,可以将缓冲区的文字插入光标的位置
y(移动命令) | copy | 赋值 |
yy | copy | 复制一行,可以nyy复制多行 |
p | paste | 粘贴 |
命令 d、x 类似于图形界面 的剪切 CTRL+X
命令 y 类似于图形界面 的复制 CTRL+C
命令 p 类似于图形界面 的粘贴 VTRL+V
vi的文本缓冲区 和 系统的剪切板 不是同一个
所以,其他软件通过 CTRL+C 复制的内容不可以在vi中使用 p 进行复制,但可以右键粘贴
7.替换命令
r | replace | 替换当前字符 命令模式 单一字符替换 |
R | replace | 替换当前行光标后的字符 替换模式 类似与编辑中 替换模式(insert 切换的那个) |
R命令可以进入 替换模式,按下ESC可以回到命令模式
替换命令的作用就是不用进入编辑模式,对文本进行轻量级修改
8.缩进和重复执行
>> | 向右增加缩进 |
<< | 向左减少缩进 |
. | 重复上次命 |
在可视模式下,缩排命令只需要使用一个 > 或 <
9.查找命令
1)常规快速查找
/str | 查找str |
n | 查找下一个 |
N | 查找上一个 |
2)单词快速匹配
* | 向后查找当前光标所在的单词 |
# | 向前查找当前光标所在的单词 |
都会移动到另一个单词的位置
10.查找与替换
vi 中查找和替换命令需要在 末行模式 下执行
记忆命令格式 :%s///g
1)全局替换
一次性替换文件中的 所有出现的旧文本
命令格式 :%s/旧文本/新文本/g
2)可视区域替换
前提:选中要替换的文字范围
命令格式 :s/旧文本/新文本/g
3)确认替换
如果把末尾的 g 改成 gc 替换时,会有提示!推荐使用
命令格式 :s%/last/new/gc
y | yes | 替换 |
n | no | 不替换 |
a | all | 替换所有 |
q | quit | 退出替换 |
l | last | 最后一个,并把光标移动到行首 |
^E | 向下滚屏 | |
^Y | 向上滚屏 |
11.插入命令
进入编辑模式的方式
i | insert | 在当前字符前插入文本 |
I | insert | 在行首插入文本 |
a | append | 在当前字符后添加文本 |
A | append | 在行末插入文本 |
o | 在当前行后面插入一行空行 | |
O | 在当前行前面插入一行空行 |
O
I i a A
Hello this is a instance
o
一些技巧:
编辑模式和数字连用: 用于输入重复的内有
一次性增加注释:在可视化模式下通过 垂直选中,并通过 I 在首行输入注释符号!!上述的两种方式完成条件都是在完成输入后摁下 ESC 切换会命令模式时才会显示
在插入模式下并不会进行刷新显示
12.末行拓展命令
末行命令主要是 针对文件进行操作的:保存、退出、保存&退出、搜索&替换、另存、新建、浏览文家
:e | edit | 打开内置文件浏览器,浏览当前目录下的文件 .表示当前目录,也可以输入文件名 |
:n | new | 新建文件 |
:w | write | 另存为,但是切换文件之前,必须保证该文件已经被保存 |
w 命令可以方便的实现 阶段备份
13.分屏命令
使用分屏命令,可以同时编辑和查看多个文件
:sp[文件名] | split | 横向增加分屏 也可以传入 .打开目录 |
:vsp[文件名] | vertical split | 纵向增加分屏 |
1)切换分屏窗口
分屏窗口都是基于CTRL+W这个快捷键的 w->window
w | window | 切换到下一个窗口 |
r | reverse | 互换窗口 |
c | close | 关闭当前窗口,但是不能关闭最后一个窗口 |
q | quit | 退出当前窗口,如果是最后一个窗口,则退出vi |
o | other | 关闭其他窗口 |
窗口的管理第一部就是摁下CTRL+W!无论进行什么操作第一步都是摁下 CTRL+W