目录
一. vim的三种常见模式:
a. 命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本,行间跳转,删除,查找等工作。
b. 输入模式:用于修改文本
c. 扩展命令(extended command )或末行模式:保存,退出等搜索替代。
1.1 三个模式之间的转换关系
在每次运行vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作,而每次在编写完文档后需要先返回命令模式,然后再进入到末行模式,执行文档的保存或者退出操作。在vim中,无法直接从输入模式切换到末行模式。
图例:
二. 掌握各个模式下的常用命令
2.1 命令模式下 -----vim常用命令
退出VIM :
ZZ | 保存退出 |
ZQ | 不保存退出 |
命令 | 作用 |
dd | 删除(剪切)光标所在的整行。 dw------->删除一个单词 |
5dd | 删除(剪切)从光标处开始的5行。数字根据情况变化 |
yy | 复制光标所在的整行。 yw-----复制一个单词 |
5yy | 复制从光标处开始的5行 |
n | 显示搜索命令定位到的下一个字符串 |
N | 显示搜索命令定位到的上一个字符串 |
u | 撤销上一步的操作 |
U | 撤消光标落在这行后所有此行的更改 |
Ctrl-r | 重做最后的“撤消”更改,相当于windows中crtl+y |
p(小写) | 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面/下面 |
P | 将之前删除(dd)或复制(yy)过的数据粘贴到光标前面/上面 |
x | 删除/剪切光标处的字符 |
单词间跳转
w | 下一个单词的词首 |
e | 当前或下一单词的词尾 |
b | 当前或前一个单词的词首 |
#COMMAND | 由#指定一次跳转的单词数 |
当前页跳转:
H | 页首 |
M | 页中间行 |
L | 页底 |
zt | 将光标所在当前行移到屏幕顶端 |
zz | 将光标所在当前行移到屏幕中间 |
zb | 将光标所在当前行移到屏幕底端 |
命令模式翻屏(页)操作:
Ctrl+f | 向文件尾部翻一屏,相当于Pagedown |
Ctrl+b | 向文件首部翻一屏,相当于Pageup |
Ctrl+d | 向文件尾部翻半屏 |
Ctrl+u | 向文件首部翻半屏 |
删除命令
d | 删除命令,可结合光标跳转字符,实现范围删除 |
d$ | 删除到行尾 |
d^ | 删除到非空行首 |
d0 | 删除到行首 |
dw | 下一个单词的词首 |
de | 当前或下一个单词的词尾 |
db | 当前或上一个单词的词首 |
dd | 剪切光标所在的行 #dd 删除从当前光标开始到第#行 |
D | 从当前光标位置一直删除到行尾,等同于d$ |
2.2 输入模式下vim常用命令
使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表 3 所示),当编辑文件完成后按 Esc 键即可返回命令模式。
快捷键 | 功能描述 |
i | 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动 |
I | 行首插入命令 |
o | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
O | 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 |
a | 在当前光标所在位置之后插入随后输入的文本 |
A | 行尾插入命令 |
2.3 末行模式下vim常用命令
末行模式:文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。
快捷键 | 功能效果 |
:q | 退出不保存 |
:q! | 强制退出不保存 |
:w | 保存 |
:w 新文件名 | 另存为新文件: |
:wq :zz :x | 保存并退出 |
:e 其他文件名(如果已修改需要加e!) | 打开新文件进行编辑 |
:r 其他文件名 | 在当前文件中读入其他文件内容 |
!命令 | 执行命令 |
:r!命令 | 读入命令 |
: [替换范围] s /旧的内容/新的内容[/g] | |
:s /old/new | 替换当前行中的第一个old改为new |
:s /old/new/g | 替换当前行中的所有old改为new |
:#,# s /old/new/g | #到#行所有old改为new |
:%s /old/new/g | %代表全文 全文替换所有old改为new |
# d | 删除 第#行 |
#,# d | 删除#到#行 |
#,# y | 复制三到6 行 |
:set nu 或:set nonu | 加行号 不显示行号 |
:set cul (:set nocul ) | 光标所在行有下划线(取消) |
no hl | 取消高亮 |
:set ai | 对齐 回车后和上一行对齐 |
:set all 可以看所有的一些帮助 | 可以看所有的一些帮助 |
set key=password (大X) | 加密码 |
set key=空白 | 取消密码 |
set tabstop=4 (set ts=4) | tab 一次为四个空格 |
.!命令 (who,date ) | 将date命令插入当前行注意会覆盖当前行 |
总结,这三个模式下,命令模式与末行模式下的命令较为多样,需要我们多加练习才能更好的加深记忆,勤加练习。