vim的使用
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode):
启动vim随即进入命令行模式 等同于按Esc键;
命令行模式(Command mode)
-
切换到输入模式
-
i
切换到输入模式,修改位置为光标所在位置,即在光标处开始插入字符! -
a
切换到输入模式,修改位置为 光标下一位置,光标自动往下一个字符。 -
I
切换到输入模式,调到某一行行首。 -
A
切换到输入模式,调到某一行行末。
-
查找
-
/find
向下查找。小技巧:在炒鸡炒鸡长的一行里,方便鼠标定位,按i
即可修改,不用一个一个字符滑动 -
?find
向上查找。 -
n
代表重复前一个搜寻动作,比如/find
搭配n
向下查找下一个。或者用上箭头+enter
。 -
N
代表『反向』进行前一个搜寻动作。,比如/find
搭配N
向上查找下一个。
-
字符的删除
-
x
等同于delete键 -
10x
连续向后删除 10 个字符。 -
X
等同于backspace键
-
行的复制和删除
-
yy
复制当前行;结合p
粘贴所复制的行数! eg:2yy 然后 p -
dd
删除当前行;结合p
粘贴所删除的行数! eg:2dd 然后 p个人喜欢这么用,因为不用动鼠标拷贴
-
替换
-
:%s/before/after/
vi里的替换操作,也可用sed -i 's/before/after/' file
(一不小心替换错了,尴尬,所以最好不要用-i在原文件上操作)实现;末尾加g
表示一行内全部替换。 -
r
按完后毫无反应,但是却可以实现替换光标所在字符。 -
R
按R后下方出现-- REPLACE --
显示当前不是插入模式,是replace模式。 Esc可退出 - “
-
撤销和重复
-
u
替换错了怎么办??用u
撤销,可多次使用。 -
ctrl+r
退回, 比如我不小心按到u
了。 -
.
重复删除或者复制yy
搭配p
搭配.
重复粘贴该行;
dd
搭配p
搭配.
重复删除光标所在行;
-
保存和退出
-
:wq
&&wq!
保存和强制保存/覆盖! -
:q
&&:q!
退出和强制退出! -
:w new_file_name
简言之另存为,可保留源文件。方便我忘记复制,在原流程里改数据,嘎嘎
-
行的编号
-
:set nu
或者:set number
撤销使用:set number
。
输入模式(Insert mode)
一般大家都会在环境设置里设置自动tab,方便写程序。
比如我的.vimrc里:
set showmatch " auto match ()
set smartindent " auto tab
坏处就是在你从另一个文档里粘贴一段代码到当前vi文本里时,自动tab就会在你原有模块的基础上,继续补加tab,然后你就看到了好好的文本变歪了。所以我最喜欢在Esc模式下用set paste
清除自动补加tab功能,然后用set nopaste
还原。