转自:http://www.yulongjun.com/linux/20170602-01-vim/
vim常见四种模式:
普通模式(
normal mode
)插入模式(
insert mode
)可视模式(
visual mode
)命令模式(
excute mode
)
下面整理了常用的快捷键和记忆方法(结合英文的记忆方法法)
普通模式
光标移动:
按键 | 效果 | 记忆方法 |
---|---|---|
h j k l | 向左/下/上/右移动 | ←↑↓→ |
w | 移动到下个单词开头 | word |
W | 移动到下个单词开头(包含标点) | Word |
e | 移动到下个单词结尾 | end |
E | 移动到下个单词结尾(单词含标点) | End |
b | 移动到上个单词开头 | back |
B | 移动到上个单词结尾(单词含标点) | Back |
0 | 移动到行首 | hard |
^ | 移动到行首的非空白符 | soft |
$ | 移动到行尾 | |
H | 当前屏幕的第一行 | High |
M | 当前屏幕的中间 | Middle |
L | 当前页的的最后一行 | Low |
gg | 移动到文件第一行 | goto line1 |
G | 移动到文件最后一行 | Goto EOF |
5G | 移动到第五行 | -Goto line5 |
查找:
按键 | 效果 | 记忆方法 |
---|---|---|
f{char} /F{char} | 在行内向下/向上查找字符{char} (光标在字符上) | find/Find |
t{char} /T{char} | 在行内向下/向上查找字符{char}(光标在字符前面) | till /Till |
; /, | 跟f /F /t /T 结合使用,,跟查找顺序相同/相反的下一个匹配项 | - |
/pattern | 文档向下查找匹配项 | - |
?pattern | 文档内向上查匹配项 | - |
n /N | 跟/ 和? 结合使用,跟查找顺序相同/相反的下一个匹配项 | next/Next |
剪切, 复制, 粘贴:
按键 | 效果 | 记忆方法 |
---|---|---|
yy | 复制当前行 | yank |
5yy | 复制 5 行 | 5次yank |
yw | 当光标在单词首字母处,复制当前单词 | yank word |
yaw | 当光标在单词内部,复制当前单词(单词后面空格也复制) | yank around word |
yiw | 当光标在单词内部,复制当前单词(单词后面空格不复制) | yank inside word |
p | 在光标后粘贴 | paste |
P | 在光标前粘贴 | Paste |
dd | 剪切当前行 | delete |
2dd | 剪切 2 行 | 2次delete |
dw /dW | 光标在单词首字母处,剪切当前单词 | delete word |
daw /daW | 剪切当前单词(后面有空格也剪切) | delete around word |
diw /diW | 剪切当前单词(后面有空格也剪切) | delete inside word |
D | 剪切, 从光标位置到行末 | Delete |
x | 向后剪切掉一个字符,不用进入插入模式 | 向后x掉 |
X | 向前剪切掉一个字符,不用进入插入模式 | 向前X掉 |
J | 去掉行尾的换行符,即连接两行 | Join lines |
u | 撤销 | undo |
<ctrl-r> | 重做 | redo |
滚屏:
按键 | 效果 | 记忆方法 |
---|---|---|
<Ctrl + b> | 向后滚动一屏 | backwards |
<Ctrl + f> | 向前滚动一屏 | forwards |
<Ctrl + d> | 向后滚动半屏 | down |
<Ctrl + u> | 向前滚动半屏 | up |
插入模式
按键 | 效果 | 记忆方法 |
---|---|---|
i | 从光标前开始插入字符 | insert |
I | 从行首开始插入字符 | Insert |
a | 从光标后开始插入字符 | append |
A | 从行尾开始插入字符 | Append |
o | 在当前行之下另起一行, 开始插入字符 | open a new line |
O | 在当前行之上另起一行, 开始插入字符 | Open a new line |
s | 删除当前字符,然后进入插入模式(替换) | substitute |
S | 删除当前行,然后进入插入模式(替换) | substitute |
r | 替换当前字符(其实是属于replace模式) | replace |
R | 替换连续的几个字符(属于replace模式) | Replace |
cw /cW | 删掉一个单词/带标点的单词,然后进入插入模式 | change |
C | 删除光标所在行的光标后面的内容 | Change |
<Esc> | 退出插入模式 | - |
可视模式(visual mode)
按键 | 效果 | 记忆方法 |
---|---|---|
v | 选择字符 | visual |
V | 选择行 | Visual line |
<ctrl-v> | 选择块 | visual block |
gv | 重复上次的高亮区域 | - |
o | 结合可视模式用的o ,回到活动端点 | - |
vw | 光标在单词首字母处,选择单词 | visual word |
vaw | 选择单词(包括单词后面的空格) | visual around world |
viw | 选择单词(不包括单词后面的空格) | visual inside world |
vit | 选择标签内的内容(html) | visual inside tags |
命令行模式
按键 | 效果 | 记忆方法 |
---|---|---|
:w | 保存、写入 | write |
:x /:wq | 保存并退出 | write quit |
:q! | 直接退出 | quit |
r filename | 读文件内容到当前文件中 | read filename |
w filename | 将当前文件内容另存到另一个文件 | write filename |
!command | 执行命令 | !command |
r!command | 读入命令的输出 | read !command |
:set number | 设置行符 | 略 |
:syntax on /:syntax off | 开启/关闭代码高亮 | 略 |
替换命令:
:s/target/replacement/
:替换当前行的第一个target
为replacement
:s/target/replacement/g
:替换当前行的所有的target
为replacement
:n,$s/target/replacement/
:替换第n到最后一行的第一个target
为replacement
:n,$s/target/replacement/g
:替换第n到最后一行的所有的target
为replacement
:%s/target/replacement
:替换所有行的第一个target
为replacement
:%s/target/replacement/g
:替换所有行的所有的target
为replacement
用
#
或+
作为分隔符,/
作为匹配项中的内容::s#target/#/replacement#g
:替换所有行的第一个target/
为/replacement
:%s+/oradata/apras/+/user01/apras1+g
:替换所有行的/oradata/apras/
为/user01/apras1/
颜色
<ctrl+v+[>
在颜色方案前面插入上述三个按键,效果是蓝色的^[
(并不是字符^[
,只是这三个键呈现在屏幕的效果)