vim
vim:
基本模式:
编辑模式,命令模式
输入模式
末行模式:
内置命令行端口:
打开文件:
vim:
+#:打开文件后,直接让光标处于#行的行首
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
模式转换:默认模式
编辑模式 -->输入模式:
i:insert,在光标所在处输入
a:append,在光标所在后方输入
o:在光标所在处下风打开一个新行:
I:在光标所在行的行首插入
A:在光标所在行的行尾输入
O:在光标所在处的上方打开一个行行
输入模式-->编辑模式:
ESC
编辑模式-->末行模式:
:
末行模式-->编辑模式
ESC
关闭文件:
ZZ:保存并推出;
:q 推出 :q!强制退出,不保存 :wq 保存修改并推出 :x 保存并推出
:w/ /PATH/TO/ 保存到指定文件中
光标跳转:
字符间跳转: h,l,j,k左右下上 #hjkl:跳转#个字符
单词间跳转: w:下一个单词词首,b:当前或前一个单词的词尾
e:当前或者后一个单词词首: #COMMAND:跳转由#指定个数的单词
行首行尾跳转:^:跳转至行首的第一个非空白字符,0:跳转至行首,$:跳转至行尾
行间跳转:#G:跳转至#指定的行,G:跳转至最后一行
句间跳转
段间跳转
翻屏:
ctrl+f:向文件尾部翻一屏
ctrl+b:向文件首部翻一屏
ctrl+d:像文件尾部翻半屏
ctrl+u:向文件首部翻半屏
Enter:执行向后翻
vim的编辑命令:
字符编辑:x:删除光标所在处的字符;,#x:光标所在处起始的#字符:.xp:交换光标所在处的字符以及后面的字符的位置
替换命令:r:替换光标所在的字符,rCHAR;.
删除命令:d:删除命令,可结合光标跳转字符,实现范围删除
d&: 删除当前光标所在处到行首的内容;.#dd删除光标所处起始行的共#行;
粘贴命令:(p, put, paste)
P:缓冲区的内容如果为整行,则粘贴在当前光标所在行的下方,否则,则粘贴至光标所处的后方
p:缓冲区的内容如果为整行,则粘贴在当前光标所在行的上方,否则,则粘贴至光标所处的前方
复制命令:(yank, y)
y$
#yy
yy
改变命令:(change,c)
编辑模式-->输入模式,实现删除操作
可视化模式:
v
V
撤销操作:
u
#u:撤销此前#的操作
撤销此前的撤销:
Ctrl+r
重复执行前一个编辑操作;
vim自带的练习教程:vimtutor
vim末行模式:
内建的命令行接口
(`1)start_post[,end_pst]
#: 特点的地#行,例如5即第五行
.; 当前行
$: 最后一行
#,#: 指定行范围,左侧为起始行,右侧为结束行;
#,+# 指定行范围,左侧为起始行,右侧为相对左侧行号的偏移量,;例如7,+3行
.,$-1;当前行到倒数第二行
1,$
%; 全文
/pattern/:从光标所在处起始,第一次被模式所匹配到的行;
/first/,$:从first到最后一行
/pat1/,.pat2/:从光标所在处起始,第一次由tat1匹配到的行开始,至第一次右pat2匹配的行之间的所有行
可通编辑命令一同使用,实现编辑操作
(2) 查找
/PATTERN: 从当前光驱所在处向文件尾部查找能后被当前模式匹配到的所有字符串
?PATTERN: 从当前光驱所在处向文件首部部查找能后被当前模式匹配到的所有字符串
n: 下一个,与命令方向相同
N: 上一个与命令方向相反
(查找并替换):
s: 末行模式的命令;使用格式;
s/要查找的内容/替换为的内容/修饰符
要查找的内容: 可使用正则表达式;
替换为的内容: 不能使用正则表达式,但可有引用;
如果"要查找内容"部分在模式中使用分组符合:在"替换为的内容"中使用 后向引用;
直接引用查找模式匹配到的全部文本,要使用&符号;
修饰符:
i: 忽略大小写;
g:全局替换,意味着一行中如果匹配到多次,则均替换;
可把分隔符/替换为其他非常用;
###
@@@
实例:把所有t开头的单词替换T开头;%s@\<t/([[:alpha:]]\+)\>@T\1g
巴所有t开头的单词尾部加上er;%s\<t[[:alpha:]]\+\@&er@g
巴所有#号开头的行删除(替换为无);%s@^#@@
练习(centos7):
!、复制/etc/grub2.cfg文件至/tmp中,用查找替换命令删除/tmp/grub1.cfg文件中以空白字符开头的行首的空白字符; %s@^[[:space:]]\+@@
2、复制/etc/re.d/init.d/fuctions文件至/tmp目录中,用查找替换命令为/tmp/functlons文件的每个空白字符开头的行的行首加上#;%s@^[[:spsce:]]\[^[:space:]@#&@g
3、为/tmp/grub.cfg文件的前三行行首加上#号
4、将/etc/yum.repos.d/CentOS-Base.repo文件中所有的endabled=0替换为enabled=1,所有gpgcheck=替换为gpgcheck=1;%s@\(enabled\|gpgcheck)=-0@\1=1@g
vim的多文件功能:
vim FILE1 FILE2 ...
大文件切换:
next 下一个
prev 上一个
first 第一个
last 最后一个
退出所有文件:
wqall:保存并推出所有文件
wall
qall
多窗口:
-o:水平分割窗口
-O:垂直分割窗口
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了