Vim文本编辑命令
-
Vim
-
安装Vim
-
启动Vim
vim 直接启动vim
-
文件命令
打开单个文件
vim file
同时打开多个文件
vim file1 file2 file3 ...
在vim窗口中打开一个新文件
:open file
在新窗口中打开文件
:split file
切换到下一个文件
:bn
切换到上一个文件
:bp
查看当前打开的文件列表,当前正在编辑的文件会用[]括起来。
:args
打开远程文件,比如ftp或者share folder
:e ftp://192.168.10.76/abc.txt
:e \\qadrive\test\1.txt
-
Vim模式
正常模式(按Esc或Ctrl+[进入) 左下角显示文件名或为空
插入模式(按i键进入) 左下角显示--INSERT--
可视模式(正常模式下 按v进入) 左下角显示--VISUAL--
-
插入命令
i 在当前位置生前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
cw 替换从光标所在位置后到一个单词结尾的字符
-
简单的移动光标
0
→ 数字零,到行头
^
→ 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$
→ 到本行行尾
g_
→ 到本行最后一个不是blank字符的位置。
/pat
tern
→ 搜索 pattern
的字符串(陈皓注:如果搜索出多个匹配,可按n键到下一个)
- 简单的删除
x 删除当前光标下的字符
dw 删除光标之后的单词剩余部分。
d$ 删除光标之后的该行剩余部分。
dd 删除当前行。
c 功能和d相同,区别在于完成删除操作后进入INSERT MODE
cc 也是删除当前行,然后进入INSERT MODE
-
拷贝/粘贴
P
→ 粘贴(p/P都可以,p是表示在当前位置之后,P表示在当前位置之前)
yy
→ 拷贝当前行当行于 ddP
-
Undo/Redo
u
→ undo
<C-r>
→ redo
-
打开/保存/退出/改变文件(Buffer)
:e <path/to/file>
→ 打开一个文件
:w
→ 存盘
:saveas <path/to/file>
→ 另存为 <path/to/file>
:x
, ZZ
或 :wq
→ 保存并退出 (:x
表示仅在需要时保存,ZZ不需要输入冒号并回车)
:q!
→ 退出不保存 :qa!
强行退出所有的正在编辑的文件,就算别的文件有更改。
:bn
和 :bp
→ 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。
到此为止,以上为Vim的一些基本操作所需要的命令。
- 查找命令
/text 查找text,按n健查找下一个,按N健查找前一个。
?text 查找text,反向查找,按n健查找下一个,按N健查找前一个。
vim中有一些特殊字符在查找时需要转义 .*[]^%/?~$
:set ignorecase 忽略大小写的查找
:set noignorecase 不忽略大小写的查找
查找很长的词,如果一个词很长,键入麻烦,可以将光标移动到该词上,按*或#键即可以该单词进行搜索,相当于/搜索。而#命令相当于?搜索。
:set hlsearch 高亮搜索结果,所有结果都高亮显示,而不是只显示一个匹配。
:set nohlsearch 关闭高亮搜索显示
:nohlsearch 关闭当前的高亮显示,如果再次搜索或者按下n或N键,则会再次高亮。
:set incsearch 逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成。
:set wrapscan 重新搜索,在搜索到文件头或尾时,返回继续搜索,默认开启。
-
替换命令
ra 将当前字符替换为a,当期字符即光标所在字符。
s/old/new/ 用old替换new,替换当前行的第一个匹配
s/old/new/g 用old替换new,替换当前行的所有匹配
%s/old/new/ 用old替换new,替换所有行的第一个匹配
%s/old/new/g 用old替换new,替换整个文件的所有匹配
:10,20 s/^/ /g 在第10行知第20行每行前面加四个空格,用于缩进。
ddp 交换光标所在行和其下紧邻的一行。
- VI中的多行删除与复制
法一:
单行删除,:1(待删除行)d
多行删除 ,:1,10d
法二:
光标所在行,dd
光标所在行以下的N行,Ndd
方法1:
光标放到第6行,
输入:2yy
光标放到第9行,
输入:p
此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面。
方法2:
命令行模式下输入
6,9 co 12
复制第6行到第9行之间的内容到第12行后面。
方法3:
有时候不想费劲看多少行或复制大量行时,可以使用标签来替代
光标移到起始行,输入ma
光标移到结束行,输入mb
光标移到粘贴行,输入mc
然后 :'a,'b co 'c 把 co 改成 m 就成剪切了
要删除多行的话,可以用 :5, 9 de