自己以前在linux上修改文本都觉得vi太麻烦 用的xshell的文件传输放到本地改完再放上去,最近工作需要改的东西较多 而且觉得很low 于是总结了下vi下的基本用法 一起学习
打开文件
vim /path/to/somefile
vim +# :打开文件,并定位于第#行
vim +:打开文件,定位至最后一行
vim +/PATTERN : 打开文件,定位至第一次被PATTERN匹配到的行的行首
关闭文件
末行模式:
:q 退出 没有动过文件
:wq 保存并退出 动过了,不后悔
:q! 不保存并退出 动过了,后悔了
:w 保存
:w! 强行保存
:wq –> :x
ZZ: 保存并退出 不需要冒号,编辑模式
编辑–>输入:
i: 在当前光标所在字符的前面,转为输入模式;
a: 在当前光标所在字符的后面,转为输入模式;
o: 在当前光标所在行的下方,新建一行,并转为输入模式;
O:在当前光标所在行的上方,新建一行,并转为输入模式;
I:在当前光标所在行的行首,转换为输入模式
A:在当前光标所在行的行尾,转换为输入模式
输入–>编辑:
ESC
编辑–>末行:
:
末行–>编辑:
ESC, ESC
编辑模式
移动光标
字符
h: 左;j: 下;k: 上;l: 右
单词
w: 移至下一个单词的词首
e: 跳至当前或下一个单词的词尾
b: 跳至当前或前一个单词的词首
行内
0: 绝对行首
^: 行首的第一个非空白字符
$: 绝对行尾
行间
G:文章末尾
3G:第3行
gg:文章开头
翻屏
ctrl:f,b
末行模式 shift + :
set:设置
set nu number
set nonu nonumber
set readonly
/:查找
/after
n,N
?向上查找
!:执行命令
:!ls -l /
末行模式
s查找并替换
s/str1/str2/gi
/:临近s命令的第一个字符为边界字符:/,@,#
g:一行内全部替换
i:忽略大小写
范围
n:行号
.:当前光标行
+n:偏移n行
:末尾行,:末尾行,-3
%:全文