最近在做linux相关学习,记录vi常用命令如下:
1. 光标移动
* w 光标移动到下一个文字的开始
* b 光标移动到上一个文字的开始
* e 光标移动到下一个文字的结束
* n + <space> 光标移动n个字符
* 0/ Home 光标移动到行首($/End 光标移动到行尾)
* H / M / L 光标移动到屏幕最上方一行(中间一行 / 最后一行)
* G 光标移动到最后一行 (nG光标移动到第n行,显示行号,配合set nu)
* nG 光标移动到第n行
* gg 光标移动到第一行第一个字母
* n + Enter 光标向下移动n行
* ctrl + f 屏幕向前翻一页
* ctrl + b 屏幕向后翻一页
* ctrl + u 屏幕向前翻半页
* ctrl + d 屏幕向后翻半页
2. 编辑模式
* /word 在光标之后查找word
* ?word 在光标之前查找word
* :n1,n2s/word1/word2/g 在n1行和n2行之间搜索word1,并替换为word2(g表示全局替换)
* :n1,n2s/word1/word2/gc 在n1行和n2行之间搜索word1,并替换为word2(g表全局,c表示需要确认)
* :1,$s/word1/word2/gc 在首行到尾行之间搜索word1,并替换为word2
3. 剪切(删除)、复制、粘贴
* x / X 向后删除一个字符(向前)
* nx 向后删除n个字符
* nw 向后删除n个单词
* dd 删除光标所在整行(即剪切至缓冲区)
* ndd 删除光标所在n行
* d1G 删除光标到第一行
----------------------------
* nyl / nyh 复制光标所在向后(向前)n的字符
* nyw 复制光标后的n个单词
* nyy 复制光标所在n行
PS: (复制强大功能,部分系统不支持)
通过v到visual模式,然后直接选择文本,通过y或者d进行复制或者剪切
* y1G 复制光标所在行到第一行
* yG 复制光标所在行到最后一行
* p / P 粘贴内容到光标所在行的下一行(上一行)
* J 将光标所在行和下一行进行连接(方便删除空白)
4. 撤销
* u 撤销上次操作
5. 编辑
* i 在当前字符前插入
* a 在当前字符后插入
* r 在当前字符上进行替换
* R 从当前字符开始进行替换,直到esc为止(可替换多个字符)
* o / O (在当前行下插入空行,并将光标移到下一行; O相反)
6. 命令行模式
* q 不保存关闭文件,如果有修改,会有提示是否保存
* q! 强制关闭文件,不保存
* wq 保存文件,并关闭
* w 保存文件
* w! 强制保存文件
* wq! 强制保存文件,并关闭