1 开发者vi命令常见使用场景
1.1 linux环境下配置文件的修改
2 vi命令文件的打开和关闭
2.1 文件的打开
* vi /project.log 光标定位于首行首字母
* vi +# /project.log :打开文件,并定位于第#行
* vi + /project.log :打开文件,定位至最后一行
* vi +/PATTERN /project.log : 打开文件,定位至第一次被PATTERN匹配到的行的行首
2.2 文件的关闭
* 末行模式:
* :q 退出 没有动过文件
* :q! 不保存并退出 动过了,后悔了
* :w 保存
* :w! 强行保存
* :wq 保存并退出 动过了,不后悔
* :wq! 强制保存并退出 动过了,不后悔
* (w 保存;q 退出; !强制)三者组合
3 vi编辑器模式
* 编辑模式:按键具有编辑文本功能:**默认打开进入编辑模式**
* 输入模式:按键本身意义
* 末行模式:接受用户命令输入
3.1 编辑模式切换到输入模式
* i: 在当前光标所在字符的前面,转为输入模式;
* a: 在当前光标所在字符的后面,转为输入模式;
* o: 在当前光标所在行的下方,新建一行,并转为输入模式;
* O:在当前光标所在行的上方,新建一行,并转为输入模式;
* I:在当前光标所在行的行首,转换为输入模式
* A:在当前光标所在行的行尾,转换为输入模式
3.2 编辑模式切换到末行模式
* : (冒号即可切换)
3.3 输入模式(或末行模式)切换到编辑模式
* ESC
3.4 编辑模式
* **移动光标**
**字符 (对于普通开发,没必要记,经常会忘,用上下左右键就行)**
h: 左;j: 下;k: 上;l: 右
**单词 (上下左右键可以代替,对开发意义不大)**
w: 移至下一个单词的词首
e: 跳至当前或下一个单词的词尾
b: 跳至当前或前一个单词的词首
**行内**
0: 绝对行首
^: 行首的第一个非空白字符
$: 绝对行尾
**行间**
G:文章末尾
3G:第3行
gg:文章开头
**翻屏**
ctrl+f :将屏幕向文件尾方向翻滚一整屏
ctrl+b:将屏幕向文件首方向翻滚一整屏
* **删除&替换单个字符(意义不大,对于开发者,命令使用的少)**
x:删除光标位置字符
3x:删除光标开始3个字符
r:替换光标位置字符
* **删除命令**
dw 删除光标所在单词
dd 删除光标所在整行
* **复制粘贴**
yw 复制光标所在单词
yy 复制光标所在整行
P 粘贴
* **撤销&重做**
u 撤销
ctrl+r 重做 撤销的操作
. 重复上一步的操作
3.5 末行模式
* **set:设置**
set nu number
set nonu nonumber
set readonly ----还是可以编辑,只是给了一个警告提示
*** /:查找**
/after --定位到首个字符所在行的行首非空白字符,
n,N --n向下搜索匹配字符;N向上搜索匹配字符,
?向上查找 (和/ 是相反的,?从当前光标所在位置,向文件上方查找;/ 从当前光标所在位置,向下方查找。 n 是下一个,以/方式向下搜索,则下一个为下面紧邻的一个;以?方式搜索,
则下一个为上面紧邻的一个。N反之。)
* **s查找并替换**
:**s/str1/str2/gi**
/:临近s命令的第一个字符为边界字符:/,@,#
比如:str1/ 要替换为 str2 => :s#str1/#str2#g
g:一行内全部替换
i:原字段str1搜索忽略大小写
**范围**
n:行号
.:当前光标行
+n:偏移n行
$:末尾行,$-3
%:全文
**区分大小写全文替换:**
:%s/str1/str2/g %替换范围为全文 s替换命令 /分隔符 str1原字符串 str2 目标字符串 g全行范围 :1,$s#str1/#str2#g 原字符串、目标字符包含/ 分隔符换为#、@
资源来源于:几年前北京尚学堂官网免费视频。