vi/vim操作命令

vi/vim

新建

vi [filename] 打开或新建一个文件,如: vi test.txt

i切换到输入模式,以输入字符。
ESC 键可随时退出到命令模式,操作命令都是在命令模式下的。

在命令模式下(即按ESC键后再操作)

移动光标

用键盘[Page Up] 或 [Page Down] 或[→][←][↑][↓]来移动光标。
[Ctrl] + [f]   屏幕『向下』移动一页。
[Ctrl] + [b]   屏幕『向上』移动一页。
[Ctrl] + [d]   屏幕『向下』移动半页。
[Ctrl] + [u]   屏幕『向上』移动半页。

搜索

/word向下搜索  
?word 向上搜索 再按n键继续搜索

再按n键继续正向搜索
再按N键继续反向搜索

按下"*"键,取当前光标所在的word并将它作用目标字符串进行搜索。
按下"#"键,"#"命令是"*"的反向版。
 
匹配特殊字符在字符串前面加反斜杠

开启高亮显示用":set hlsearch" 
关闭高亮显示用":set nohlsearch"

替换

:n1,n2s/word1/word2/g 在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2

:1,$s/word1/word2/g 或 :%s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!

选择

v    从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。  
V    从光标当前行开始,光标经过的行都会被选中,再按一下V结束。  
Ctrl + v    矩形区域选择,再按一下Ctrl + v结束。  
ggVG 选中全部的文本, 其中gg为跳到行首,V选中整行,G末尾

删除

x 为向后删除一个字符 (相当于 [del] 按键)
X 为向前删除一个字符(相当于 [backspace] 亦即是退格键)

nx  向后删除连续 n 个字符,n 为数字。举例来说,我要连续删除 10 个字符, 『10x』。
dd  删除游标所在的那一整行
ndd 向后删除连续 n 行

d0 删除游标所在处,到该行的最前面一个字符。
d$ 删除游标所在处,到该行的最后一个字符。

 
d1G 删除光标所在到第一行的所有数据
dG  删除光标所在到最后一行的所有数据 

复制

yy 复制游标所在的那一行。
nyy 向后复制连续 n 行。

y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据

y1G 复制游标所在行到第一行的所有数据
yG 复制游标所在行到最后一行的所有数据

粘贴

小写p将已复制的数据贴在光标下一行位置。 
大写P将已复制的数据贴在光标上一行位置。

保存

:w  保存文件。
:w! 强制保存,到底能不能保存,跟你权限有关。
:q 离开vi
:q! 不保存直接离开vi
:wq  保存并离开vi
:wq! 强制保存后离开
:w [filename] 另存为新的文档,[filename]为新文件名。
:r [filename] 读入另个[filename]文件的数据,写在游标所在行后面。

行号

:set nu 显示行号
:set nonu 取消行号

总结:

Operator + Scope = command

Operator 
v 选择
d 删除
y 复制
p 粘贴
c 修改
u 后退

Scope
e  由游标所在位置至该字串的最后一个字元。
w  由游标所在位置至下一个字串的第一个字元。
b  由游标所在位置至前一个字串的第一个字元。
$  由游标所在位置至该行的最后一个字元。
0  由游标所在位置至该行的第一个字元。
G  全部。 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容