vim headbook

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> 退出插入模式 -

可视模式

按键 效果 记忆方法
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/