您的位置:首页 > 其它

Vim 编辑器常用命令

2016-11-08 10:48 399 查看


(一)Vim模式

vim的三种工作模式:命令模式(Command Mode) 、输入模式(Input Mode)、末行模式(Last line Mode)
切换的方法:
命令模式下输入 a、i、o进入输入模式
输入模式下按 Esc 进入命令模式
命令模式下输入 : 进入末行模式
末行模式下指令错误则返回命令模式
简写记忆:
输入-->命令:Esc
命令-->输入:a i o A I O

以下所有命令都是在命令模式


(二)常用Vim命令

这个图涵盖了常用的Vim命令 




插入文本

I
 ——
在当前行第一个非空字符前插入
gI
 ——
在当前行第一列插入
a
 ——
在光标后插入
A
 ——
在当前行最后插入
o
 ——
在下面新建一行插入
O
 ——
在上面新建一行插入


文档操作

:w
 ——
保存修改
:wq
 ——
保存并退出
ZZ
 ——
保存并退出
:x
 ——
保存并退出
:q[uit]
 ——
退出当前窗口


删除

x
 ——
删除光标所在位置的一个字符
nx
 ——
删除光标所在位置的后面n个字符
dw
 ——
向后删除一个单词
db
 ——
向前删除一个单词
dd
 ——
删除光标所在行
ndd
 ——
删除从光标所在行开始的n行


移动

0
 ——
移动到行首
g0
 ——
移到光标所在屏幕行行首
$
 ——
移动到行尾
g$
 ——
移动光标所在屏幕行行尾
^
 ——
移动到本行第一个非空白字符
g^
 ——
同 ^ ,但是移动到当前屏幕行第一个非空字符处
n|
 ——
把光标移到第n列上
nG
 ——
到特定的行数(n)
:n
 ——
移动到第n行
n+
 ——
移至游标所在位置之后的第 n 列
n-
 ——
移至游标所在位置之前的第 n 列
:$
 ——
移动到最后一行
gg
 ——
到文件头部
G
 ——
到文件尾部
f/F+字符
 ——
向前/向后移动到特定的字符 
(
 ——
前移1句
)
 ——
后移1句
{
 ——
前移1段
}
 ——
后移1段
j
 ——
下移一行
k
 ——
上移一行
gj
 ——
移动到一段内的下一行
gk
 ——
移动到一段内的上一行
+或Enter
 ——
把光标移至下一行第一个非空白字符
上面的操作都可以配合n使用,比如输入3h, 则光标向左移动3个字符


复制

yw
 ——
复制单词
yf
 ——
复制当前字符到指定字符
yy或Y
 ——
复制当前行 
nyy
 ——
复制当前行开始的n行
y
w
 ——
复制1(n)个词
y$
 ——
从光标当前位置复制到行尾
y0
 ——
从光标当前位置复制到行首


剪切

d
 ——
删除(剪切)在可视模式下选中的文本
d$ or D
 ——
删除(剪切)当前位置到行尾的内容
d
w
 ——
删除(剪切)1(n)个单词
d0
 ——
删除(剪切)当前位置到行首的内容
dd
 ——
删除(剪切)1(n)行


粘贴

p
 ——
在光标之后粘贴
P
 ——
在光标之前粘贴


(三)不常用Vim命令


插入文本

:r filename
 ——
在当前位置插入另一个文件的内容
:
r filename
 ——
在第n行插入另一个文件的内容
:r !date
 ——
在光标处插入当前日期与时间(同理
:r !command
可以将其它shell命令的输出插入当前文档)


文档操作

:e file
 ——
关闭当前编辑的文件,并开启新的文件,如果对当前文件的修改未保存,vi会警告
:e! file
 ——
放弃对当前文件的修改,编辑新的文件
:e+file
 ——
开始新的文件,并从文件尾开始编辑
:e+n file
 ——
开始新的文件,并从第n行开始编辑
:enew
 ——编译一个未命名的新文档
:e
 ——
重新加载当前文档
:e!
 ——
重新加载当前文档,并丢弃已做的改动
:e#或ctrl+^
 ——
回到刚才编辑的文件,很实用
:f或ctrl+g
 ——
显示文档名,是否修改,和光标位置
:f filename
 ——
改变编辑的文件名,这时再保存相当于另存为
gf
 ——
打开以光标所在字符串为文件名的文件
:n1,n2w filename
 ——
选择性保存从某n1行到另n2行的内容


删除

x
 ——
删除游标所在该字元
X
 ——
删除游标所在之前的字元
r
 ——
输入新字元取代(replace)游标所在字元(如:ra将游标所在字元以 a 取代)
R
 ——
进入取代状态,直到
Esc
为止
s
 ——
删除游标所在之字元,并进入输入模式,直到
Esc

S
 ——
删除游标所在的一行,并进入输入模式,直到
Esc



移动

b
 ——
移动到上个字的第一个字母
w
 ——
移动到下个字的第一个字母
e
 ——
移动到下个字的最后一个字母
B
 ——
移动到上一个单词开头,忽略一些标点
W
 ——
移动下一个单词开头,但忽略一些标点
E
 ——
移动到下一个单词末尾,如果词尾有标点,则移动到标点
H
 ——
移至视窗的第一行
M
 ——
移至视窗的中间那行
L
 ——
移至视窗的最后一行
G
 ——
移至该文件的最后一行
+
 ——
移至下一列的第一个字元处
-
 ——
移至上一列的第一个字元处
ctrl+b
 ——
屏幕后移动一页
ctrl+f
 ——
屏幕向前移动一页
h或退格
 ——
左移一个字符
l或空格
 ——
右移一个字符
ge
 ——
后移一个单词,光标停在上一个单词末尾
gE
 ——
同 ge ,不过‘单词’包含单词相邻的标点 
tc
 ——
把光标移到同一行的下一个c字符前
Tc
 ——
把光标移到同一行的上一个c字符后


复制

y
l
 ——
复制光标右边1(n)个字符
y
h
 ——
复制光标左边1(n)个字符
:m,ny
 ——
复制m行到n行的内容
y1G或ygg
 ——
复制光标以上的所有行
yG
 ——
复制光标以下的所有行


剪切

d
l
 ——
删除(剪切)光标右边1(n)个字符
d
h
 ——
删除(剪切)光标左边1(n)个字符
:m,nd
 ——
剪切m行到n行的内容
d1G或dgg
 ——
剪切光标以上的所有行
dG
 ——
剪切光标以下的所有行
d/f
 ——
这是一个比较高级的组合命令,它将删除当前位置到下一个f之间的内容


滚屏

ctrl-u
 ——
文本向下滚到半屏。光标不随文本移动。相当于文本的窗口上移半屏
ctrl-d
 ——
窗口向下移动半屏,相当于文本向上滚动了半屏
ctrl-e
 ——
向上滚动一行
ctrl-y
 ——
向下滚动一行
ctrl-f
 ——
向前滚动一屏(forward)
ctrl-b
 ——
向后滚动一屏(backward)
zt
 ——
把当前行置于屏幕顶端
zb
 ——
把当前行置于屏幕底
zz
 ——
把当前行置于屏幕中央


标记

m{a-z}
 ——
标记光标所在位置,局部标记,只用于当前文件
m{A-Z}
 ——
标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效
`{a-z}
 ——
移动到标记位置
'{a-z}
 ——
移动到标记行的行首
`{0-9}
 ——
回到上[2-10]次关闭vim时最后离开的位置
``
 ——
移动到上次编辑的位置。''也可以,不过``精确到列,而''精确到行 。如果想跳转到更老的位置,可以按C-o,跳转到更新的位置用C-i
`"
 ——
移动到上次离开的地方
`.
 ——
移动到最后改动的地方
:marks
 ——
显示所有标记
:delmarks a b
 ——
删除标记a和b
:delmarks a-c
 ——
删除标记a、b和c
:delmarks a c-f
 ——
删除标记a、c、d、e、f
:delmarks!
 ——
删除当前缓冲区的所有标记
使用标记可以快速移动。到达标记后,可以用Ctrl+o返回原来的位置。 Ctrl+o和Ctrl+i 很像浏览器上的 后退 和 前进 


查找

/something
 ——
在后面的文本中查找something
?something
 ——
在前面的文本中查找something
/pattern/+number
 ——
将光标停在包含pattern的行后面第number行上
/pattern/-number
 ——
将光标停在包含pattern的行前面第number行上
n
 ——
向后查找下一个
N
 ——
向前查找下一个


替换

:s/old/new
 ——
用new替换当前行第一个old
:s/old/new/g
 ——
用new替换当前行所有的old
:n1,n2s/old/new/g
 ——
用new替换文件n1行到n2行所有的old
:%s/old/new/g
 ——
用new替换文件中所有的old
:%s/^/xxx/g
 ——
在每一行的行首插入xxx,^表示行首
:%s/$/xxx/g
 ——
在每一行的行尾插入xxx,$表示行尾


分屏编辑

vim -o file1 file2
——
水平分割窗口,同时打开file1和file2
vim -O file1 file2
——
垂直分割窗口,同时打开file1和file2


排版

<<
 ——
向左缩进一个宽度
>>
 ——
向右缩进一个宽度
:ce(nter)
 ——
本行文字居中
:le(ft)
 ——
本行文字靠左
:ri(ght)
 ——
本行文字靠右


拼写检查

:set spell
——
开启拼写检查功能
:set nospell
——关闭拼写检查功能
]s
——
移到下一个拼写错误的单词
[s
——作用与上一命令类似,但它是从相反方向进行搜索
z=
——
显示一个有关拼写错误单词的列表,可从中选择
zg
——
告诉拼写检查器该单词是拼写正确的
zw
——
与上一命令相反,告诉拼写检查器该单词是拼写错误的

原博地址:http://www.jianshu.com/p/ab8b6dfd220e?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=qq
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: