vim常用基本命令

  16 May 2017


文件

vim file1 file2...              同时打开多文件
vimdiff [文件1] [文件2]         比对文件差异

:split              多屏显示(横向)
:vsplit             多屏显示(纵向)

vim -o 文件1 文件   横向分屏打开文件
vim -O 文件1 文件   纵向分屏打开文件

:vs 文件        纵向分屏打开文件
:sp 文件        横向分屏打开文件

:q或:close      关闭当前窗口
:only           关闭除当前窗口之外其他窗口

:qa             关闭所有窗口
ctrl+w          切换窗口

:bn                下一个文件
:bp                上一个文件

:new 文件名.后缀    新建文件
:e 文件名    打开文件

q:		进入命令历史编辑
q/		类似q:

正常模式

剪切

dd:剪贴当前行
ndd:剪贴n行,,(n是一个数字)

dw:从光标处开始,剪切至一个单词/句子的末尾,包括空格
de:从光标处开始,剪切至一个单词/句子的末尾,不包括空格

d^:从当前光标剪切到“该行”首
d&:从当前光标剪切到“该行”末
d0:从当前光标剪切至行首

dH:剪切从当前行-至所显示屏幕顶部的全部行
dgg:剪切从当前行-至首行

dL:剪切从当前行-至所显示屏幕底的全部行
dG:剪切从当前行-至末尾
x : 剪切一个字符

ggdG:剪切全文

复制

yy:复制当前行
nyy:复制n行,,(n是一个数字)

yw:复制从光标处至一个单词/句子的末尾,包括空格
ye:复制从光标处至一个单词/句子的末尾,不包括空格

y$:从当前光标复制到“该行”末
y0:从当前光标(不包括光标)复制到行首

yH:复制从当前行-至所显示屏幕顶部的全部行
ygg:复制从当前行-至首行

yL:复制从当前行-至所显示屏幕底的全部行
yG:复制从当前行-至末尾

ggyG	复制全文

删除标记:di[标记]

例如:综合(综合有线)
如果要删除括号内容

将光标移至(,按di并按(
其他标记如:“[等

其他

u:撤销
ctrl+r: 反撤销

p:粘贴,光标下一行
P:粘贴,光标上一行

h--j--k--l::光标 左-下-上-右 移动

o:向下插入一行,,直接进入Insert模式
O:向上插入一行,,直接进入Insert模式

w:依次跳至每个单词的词首
e:依次跳至每个单词的词尾

gg:光标移至文档开头
G:光标移至文档末尾

ngg或nG跳到第n行
:n 跳到第n行

Ctrl + u:向文件首翻半屏 
Ctrl + d:向文件尾翻半屏 

Ctrl + b:向文件首翻一屏 
Ctrl + f:向文件尾翻一屏 

i:当前光标插入
a:当前光标下一个位置插入

I:快速定位到行首并插入
^:(shift+6)快速移到行首

A:快速定位到行尾并插入
$:(shift+4)快速移到行尾


*:当光标移至某个单词上,按*会在文本中搜索该单词,并标注
.(点):重复上一个命令

ctrl+g:列出光标所在行的行号。
nG:例如:“15G”,移动光标到该文件的第15行行首

命令模式

常用命令

q:退出
wq:保存退出

q!:强制退出
w!:强制写入

e!   : 恢复到最初状态

x:保存后离开
write:保存当前文件

/word:搜索,自上而下
?word:搜索,自下而上

set nu:列出行号
set nonu:取消列出行号

##搜索关键词时
    n:搜索下一个
    N:搜索下一个

替换

○ : s/test/target/     替换当前行第一个 test 为 target
○ : s/test/target/g   替换当前行所有 test 为 target
○ 
○ :n,$s/test/target/   替换从第n行开始到最后一行,每行第一个test为target
○ :n,$s/test/target/g  替换从第n行开始到最后一行,每行所有test为target
○ 如果n为.  则代表从当前行开始到最后一行
○ 
○ :%s/test/target/     替换所有行第一个test为target
○ :%s/test/target/g   替换所有行所有test为target
○ 
○ :g/pattern/s/old/new/g    将会把包含pattern的行中,把所有old替换为new
○ 
○ :%s/^.*\(\d+\)/\1/      将^.*\(\d+\)替换成\d+     \1正则组引用
:g/^\s*$/d  删除空白行
:%d         全部删除(普通模式:ggdG)

:%s/word/&/gn   查找统计“word”的个数


其他

:earlier 1m     回退到1分钟之前
:later  1m      和earlier相反
:%TOhtml        转成html显示

:%!xxd      16进制显示
:%!xxd -r   恢复

插入模式

ctrl+shift+c   复制
ctrl+shift+v   粘贴

可视模式

v,V,ctrl+v:进入可视模式