在命令行中执行命令#vim filename,如果filename已存在,则filename被打开且显示其内容,如果filename不存在,则Vim在第一次存盘时自动在硬盘上新建filename文件。
Vim有5中编辑模式:命令模式、输入模式、末行模式、可视化模式、查询模式。
命令模式(其他模式->ESC)
命令模式是用户进入Vim后的初始状态,在此模式中,可输入Vim命令,让Vim完成不同的工作。
Vim命令模式的光标移动命令:
h(<-):将光标向左移动一格
H:将光标移动到屏幕的顶端
l(->):将光标向右移动一格
M:将光标移动到该屏幕的中间
j(↓):将光标向下移动一格
L:将光标移动到该屏幕的底端
k(↑):将光标向上移动一格
W或w:将光标移动到下一单词
0(Home) :数字0,将光标移至行首
gg:将光标移动到文章的首行
$(End) :将光标移至行尾
G:将光标移动到文件的尾行
PageUp/PageDown:(Ctrl+b/Ctrl+f)上下翻页
Vim命令模式的复制和黏贴命令:
yy或大写YY :复制光标所在的整行
2yy或y2y :复制两行,可以举一反三,如5yy
y^或y0 :复制至行首,或y0。不含光标所在处的字符
y$ :复制至行尾,含光标所在处的字符
yw :复制一个word
y2w :复制两个字
yG :复制至文件尾
y1G :复制至文件首
p小写 :粘贴到光标的后(下)面,如果复制的是整行,则粘贴到光标所在行的下一行
P大写 :粘贴到光标的前(上)面,如果复制的是整行,则粘贴到光标所在行的上一行
Vim命令模式的删除操作命令:
x/<del> :删除一个字符
nx :删除下面n个字符
X :删除光标前的字符
dd :删除当前行
dG :删除至文件尾
d1G :删除至文件首
D/d$ :删至行尾
d0 :删至行首,或用d^不含光标所在字符
ndd :删除后面的n行(从光标所在处开始算起)
d+方向键: 删除文字
dw :删至词尾
ndw :删除后面的n个词
nd$ :删除后面的n行
u :可以撤销误删除操作
Vim命令模式的撤销操作命令:
u :取消上一个更动
U :取消一行内的所有更动
输入模式(命令模式->a、i、o、A、I、O)
在输入模式下,可对编辑的文件添加新的内容及修改,这是该模式的唯一功能,即文本输入。
Vim输入模式命令:
a :在光标之后插入内容
A :在逛遍当前行的末尾插入内容
i :在光标之前插入内容
I :在光标当前行的开始部分插入内容
o :在光标所在行的下面新增一行
O :在光标所在行的上面新增一行
末行模式(命令模式为:)
末行模式命令:
:w :[文件路径 保存当前文件
:q :结束Vim程序,如果文件有过修改则必须先存储文件
:q!:强制结束Vim程序,修改后的文件不会存储
:wq或:x:保存当前文件并退出
:e 文件名 :将在原窗口打开新的文件,若旧文件编辑过,则会要求保存
:e!:放弃所有更改,重新编辑
:r 文件名 :在当前光标的下一行插入文件内容
:r! :命令 在当前光标插入命令执行结果
:set nu或 set nonu :显示行号/不显示行号
:number :将光标定位到number行
:[range]s/<match>/<string>/[g,c,i]:替换一个字符串
在末行模式下,替换命令的格式为:
[range]s/pattern/string/[c,e,g,i]
其中,
rang:指的是范围,”1,8”指从第1行至第8行,“1,$"指从第1行至最后一行,也就是整个文件内容,也可以用%代表,%指目前编辑的文件。
s(search):表示搜索。
pattern:就是要被替换的字符串
string:将替换的pattern
c(confirm):每次替换前会询问
e(error):不显示error
g(globe):不询问,将做整行替换。
i(ignore):不分大小写
g大概都是要加的,否则只会替换每一行的第一个符合字串。
可视化模式(命令模式为v)
在该模式下,移动光标以选定要操作的字符串,输入c剪切选定的字符串,输入y复制选定块的字符串。
在命令模式中输入p,可将复制或剪切的内容粘贴在光标所在位置的右边。
查询模式(命令模式为?、/)
在命令模式中输入"/"、"?"则进入查询模式
Vim命令模式下的查找命令:
/ :在命令模式,按/键就会在左下角出现一个/,然后输入要查找的字串,按Enter键就会开始查找
? :与/键相同,只是/键是向下查找,?键是向上查找。
n :继续查找
N :继续查找(反向)
常用方法
在Vim中打开另一个文件:
:e foo.txt
如果想编辑另一个文件,但又不想马上保存当前文件,可以隐藏它:
:hide e foot.txt
启动Vim时,指定一堆文件:
# vim onc.c two.c three.c
如果启动时指定了多个文件可以使用如下命令进行下一个文件的切换:
:next
如果需要保存当前文件,然后进入下一个文件,可以使用如下命令:
:wnext
如果要查看打开的文件列表可以使用如下命令:
:args
如果要回到上一个编辑的文件可以使用如下命令:
:previous(指的是文件列表中,当前文件的上一个文件)
如果要移动到文件列表中的最后一个文件:
:last
如果要移动到文件列表中的第一个文件:
:first
如果要设置自动保存,使用如下命令:
:set autowrite
如果要取消自动保存,使用如下命令:
:set noautowrite
如果要编辑另一个文件列表,而不退出Vim:
:args five.c six.c seven.h
也可以使用通配符:
:args *.txt
Vim会跳转到列表中的第一个文件,如果当前文件没有用保存,需要保存它或者使用如下命令放弃修改:
:args!
如果想在最近编辑的两个文件之间快速跳转,可以使用组合键Ctrl+^。
当跳转到另一个文件后,有两个预定义标记非常有用:
'":这个标记用于跳转到上次离开这个文件的位置。
'.:这个标记记住最后一次修改文件的位置
如果想要打开多文件编辑,可以使用如下命令:
:sp(:vsp) 文件名
从Vim 6.0开始,文件名可以是一个目录的名称,这样,Vim会把该目录打开并显示文件列表,在文件名上按下Enter键,则在本窗口打开该文件。
当Vim分割了好几个窗口,可以使用如下命令循环定位到各个窗口:
c-w-w
如果想要查看本Vim程序打开了多少个文件可以使用如下命令:
:ls
在列出的文件列表中,格式如下:
1 %a "文件名" 行 2
其中:
1:表示打开的文件序号,这个序号很有用处。
%a:表示文件代号,%表示当前编辑的文件。
#:表示上次编辑的文件
如果想快速打开文件列表中的某个文件可以使用如下命令:
:b 文件序号
如果想比较两个文件,可以使用如下命令:
:set diff 此命令用户比较两个文件,可以用以下命令打开另一个文件,然后在每个文件窗口中输入此命令,就能看到效果了。