VIM操作命令

一. VIM的模式

正常模式(按Esc或Ctrl + [进入) :
左下角显示 文件名或为空
(不能输入字符)


编辑模式(按i键进入; 按插入命令进入) :
左下角显示 -- INSERT -- (插入)
(从正常模式进入编辑模式)

可视模式(不知道如何进入) :
左下角显示 -- VISUAL -- (可视)
(选择, 拷贝, 粘贴等)
(从正常模式进入可视模式)


二. 打开文件和保存文件


2.1 打开文件


:open fileName : 打开文件fileName


2.2 保存文件


:w 保存
:wq 保存并退出
ZZ 保存并退出
:q! 强制退出并忽略所有更改
:e! 放弃所有修改,并打开原来文件。
:w newName 另存为newName


2.3 切换文件窗口


:split 或 :new 打开一个新窗口,光标停在顶层的窗口上(窗口被分割显示)
:split file或:new file 用新窗口打开文件(窗口被分割显示)
split打开的窗口都是横向的,使用vsplit可以纵向打开窗口。


Ctrl+ww 移动到下一个窗口(光标跳转到上面命令创建的窗口上)
Ctrl+wj 移动到下方的窗口(光标跳转到上面命令创建的窗口上)
Ctrl+wk 移动到上方的窗口(光标跳转到上面命令创建的窗口上)


三. 光标移动


上下左右箭头移动光标(不过好像有些版本不支持选中的移动).


3.1 字符为单位


h 左移一个字符
l 右移一个字符
k 上移一个字符
j 下移一个字符
以上四个命令可以配合数字使用,
比如20j就是向下移动20行,5h就是向左移动5个字符.


在Vim中,很多命令都可以配合数字使用,比如删除10个字符10x; 在当前位置后插入3个!,3a!<Esc>,这里的Esc是必须的,否则命令不生效。


3.2 单词为单位


w 移动到下一个单词首部. 如果已到行尾, 则转至下一行行首.
b 移动到当前单词首部 (2b 移动到前2个单词首部)
e 移动到当前单词尾部.
ge 移动到上一个单词尾部.


3.3 行为单位


^ : 移动到本行第一个非空白字符上。
0 : (数字0)移动到本行第一个字符上,
<HOME> : 移动到本行首.
$ : 移动到行尾.  3$ 移动到下面3行的行尾(从当前行开始算)
gg或者[[ : 移动第一行行首
G或者]] : 移动到最后一行行首
冒号+行号+回车 或者 行号+G  : 跳到指定行.


3.4 滚动屏幕


滚动屏幕时, 光标所在位置不变

Ctrl + e : 向下滚动一行
Ctrl + y : 向上滚动一行
Ctrl + d : 向下滚动半屏
Ctrl + u : 向上滚动半屏
Ctrl + f : 向下滚动一屏
Ctrl + b : 向上滚动一屏


四. 插入命令


(这些命令将从正常模式进入编辑模式)
i 在当前位置生前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行


五. 选中, 拷贝, 粘贴, 删除, 剪切, 撤销


5.1 选中


在正常模式下, 按v键(逐字)或V键(逐行), 然后操作光标移动, 即可选中指定字符.


5.2 拷贝


5.2.1 有选中的拷贝


选中指定字符后(此时在可视模式), 按y键可对选中的字符进行拷贝(此时在普通模式).


5.2.2 无选中的拷贝


(此时在普通模式)
yy 拷贝当前行


nyy 拷贝当前后开始的n行,比如2yy拷贝当前行及其下一行。


ddp 交换当前行和其下一行


xp交换当前字符和其后一个字符


5.3 粘贴


(此时在普通模式)
p 在当前光标后粘贴, 如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴。


shift + p 在当前行前粘贴


:1,10 co 20 将1-10行插入到第20行之后。(原来1-10行不变)


:1,$ co $ 将整个文件复制一份并添加到文件尾部。


5.4 删除


(此时在普通模式)



x  删除当前字符
nx 删除当前光标开始向后n个字符, 例如 3x
X  删除当前字符的前一个字符。


dl 删除当前字符
dh 删除前一个字符
dd 删除当前行
dj 删除上一行
dk 删除下一行


nd 删除当前行开始的n行, 例如 10d


D或者d$  删除当前字符至行尾。(包括当前字符)
kdgg 删除当前行之前所有行(不包括当前行)
jdG 删除当前行之后所有行(不包括当前行)


:1,10d 删除1-10行


:11,$d 删除11行及以后所有的行


:1,$d 删除所有行


J 删除两行之间的空行,实际上是合并两行。


5.5 剪切


5.5.1 有选中的剪切


选中指定字符后(此时在可视模式), 按d键可对选中的字符进行剪切(此时在普通模式).


5.5.2 无选中的剪切


ndd 剪切当前行之后的n行。((包括当前行))


:1,10d 将1-10行剪切。


:1,10 m 20 将第1-10行移动到第20行之后. (原来1-10行被剪切掉)


5.6 撤销


u : 撤销(Undo)
Ctrl + r : 重做(Redo)
U : 撤销对整行的操作(不是很明白)


5.7 重复上次的编辑(输入, 剪切, 粘贴, 拷贝)


. : (点), 例如, 你输入一个单词abc, 然后在正常模式, 按.键, 相当于不断粘贴abc.


六. 查找和替换


(此时在普通模式)


6.1 查找


f : fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。
F 同f,反向查找。
(f和F只能找单个字符)


/text + 回车 : 查找text (被找到的文本会高亮显示). 按n健查找下一个, 按N健查找前一个.
?text + 回车 : 查找text(反向查找). 按n健查找下一个, 按N健查找前一个.


查找很长的词,如果一个词很长,键入麻烦,可以将光标移动到该词上,按*或#键即可以该单词进行搜索,相当于/搜索。而#命令相当于?搜索。


vim中有一些特殊字符在查找时需要转义  .*[]^%/?~$


:set ignorecase   忽略大小写的查找.
:set noignorecase  不忽略大小写的查找.
:set hlsearch   高亮搜索结果,所有结果都高亮显示,而不是只显示一个匹配.
:set nohlsearch   关闭高亮搜索显示.
:nohlsearch   关闭当前的高亮显示, 如果再次搜索或者按下n或N键, 则会再次高亮.
:set incsearch   逐步搜索模式, 对当前键入的字符进行搜索而不必等待键入完成.
:set wrapscan   重新搜索, 在搜索到文件头或尾时, 返回继续搜索, 默认开启.


6.2 替换


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 交换光标所在行和其下紧邻的一行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值