转自: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开启/关闭代码高亮

替换命令:

  1. :s/target/replacement/:替换当前行的第一个targetreplacement

    :s/target/replacement/g:替换当前行的所有的targetreplacement

  2. :n,$s/target/replacement/:替换第n到最后一行的第一个targetreplacement

    :n,$s/target/replacement/g:替换第n到最后一行的所有的targetreplacement

  3. :%s/target/replacement:替换所有行的第一个targetreplacement

    :%s/target/replacement/g:替换所有行的所有的targetreplacement

  4. #+作为分隔符,/作为匹配项中的内容:

    :s#target/#/replacement#g:替换所有行的第一个target//replacement

    :%s+/oradata/apras/+/user01/apras1+g:替换所有行的/oradata/apras//user01/apras1/


颜色

<ctrl+v+[>

在颜色方案前面插入上述三个按键,效果是蓝色的^[(并不是字符^[,只是这三个键呈现在屏幕的效果)
vim简明教程(附快速记忆方法)_linux vim

呈现的效果是这样:
vim简明教程(附快速记忆方法)_linux vim_02