基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode):
启动vim随即进入命令行模式 等同于按Esc键;
命令行模式(Command mode)
切换到输入模式
i 切换到输入模式,修改位置为光标所在位置,即在光标处开始插入字符!!!
a 切换到输入模式,修改位置为光标下一位置,光标自动往下一个字符。
I  切换到输入模式,调到某一行行首。
A 切换到输入模式,调到某一行行末。

以下均是在Esc模式下
查找
/ 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
个人喜欢这么用,因为不用动鼠标拷贴 !!!

yy搭配p搭配. 重复粘贴该行;
dd搭配p搭配. 重复删除光标所在行;

替换
:%s/before/after/ vi里的替换操作(底层命令行模式),也可用sed -i ‘s/before/after/‘ file(一不小心替换错了,尴尬,所以最好不要用-i在原文件上操作)实现;末尾加g表示一行内全部替换。!!!
r 按完后毫无反应,但是却可以实现替换光标所在字符。
R 按R后下方出现— REPLACE —显示当前不是插入模式,是replace模式。Esc可退出
`` 
撤销和重复
u 替换错了怎么办??用u撤销,可多次使用。!!!
ctrl+r 退回,比如我不小心按到u了。
. 重复删除或者复制
保存和退出
:wq && wq! 保存和强制保存/覆盖!!!
:q && :q! 退出和强制退出!!!
:w new_file_name 简言之另存为,可保留源文件。方便我忘记复制,在原流程里改数据,嘎嘎!!!

行的编号

:set nu 或者:set number 撤销使用:set no number。!!!

:set paste  VS set nopaste

输入模式(Insert mode)
  一般大家都会在环境设置里设置自动tab,方便写程序。
配置.vimrc
比如我的.vimrc里:
set showmatch “ auto match ()
set smartindent “ auto tab

坏处就是在你从另一个文档里粘贴一段代码到当前vi文本里时,自动tab就会在你原有模块的基础上,继续补加tab,然后你就看到了好好的文本变歪了。所以我最喜欢在Esc模式下用set paste清除自动补加tab功能,然后用set nopaste还原。

作者:AmyCui_48c4
链接:https://www.jianshu.com/p/8c150a68a277
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。d