admin管理员组文章数量:1437982
1.:put命令
:put
是一个命令行命令,用于将寄存器的内容粘贴到当前行的下方
这个命令一般用于将 当前行的所选中的内容复制到下一行。
首先选中你要复制的内容,可通过v或者ctrl+v亦或者shift+v然后通过h、l或f搜索移动光标进行选中,然后yy,然后移动到目的行的,进行:put即可在当前行的下一行进行粘贴。
2. 通过tab来编辑不同的文件
:tabnew <filename>
在新选项卡中打开指定的文件。
:tabnext
切换到下一个选项卡,或快捷键 gt
:tabprev
切换到上一个选项卡,或快捷键gT
:tabclose
关闭当前选项卡
ngt 切换到第n个选项卡,不用输入:
3.:sp命令
sp 命令进行分割窗口,使同一个文件有两个不同的窗口,或者打开另外一个文件
:sp b.txt
4.*和#命令
* 和 #: 匹配光标当前所在的单词,例如将鼠标放置在plugin上,这样按下 * 或 # 则可以在 <plugin> xxxx xxxx </plugin> 之间进行快速移动。
* 移动光标到下一个匹配单词,但实际键盘的输入为 shift + 8
# 移动光标到上一个匹配单词,但实际键盘的输入为 shift + 3
5.整体将代码进行左移和右移
shift + > + > (向右移动) ,shift + < + <(向左移动) // 需要按两下 >> <<
:10,15>
第10行至第15行向右整体移动
:20,80<
第20行至第80行反缩进
6.自动缩进
ctrl + v -> ngg -> =
7. 翻页
翻下一页,Ctrl+f键 ,f 的英文全拼为:forward
翻上一页,Ctrl+b键,b 的英文全拼为:backward
翻下半页,Ctrl+d键,d 的英文全拼为:down
翻上半页,Ctrl+u键,u 的英文全拼为:up
8. 进入编辑模式
I : 在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令
r : 在当前光标所在位置进行替换
R : 进入替换并光标向后移动依次进行替换,并直到esc退出替换
s : 删除当前光标所在的字符,并进入到编辑模式
cc : 删除当前光标所在的行,并进入到编辑模式
C : 删除当前光标到行尾的所有字符,并进入到编辑模式
9. 打开命令行
:tab ter //以tab方式打开terminal
ctrl+w gt 或 ctrl+w gT // 在文档和命令行之间进行切换
ctrl+d 关闭命令行
或者
:ter //以buffer方式打开terminal,将会显示上下两层
10. 快速删除
:g/^#/d :代表输入命令,g代表全量, // 之间是正则, ^# 以#开头的行,d代表删除
:g/^$/d :代表输入命令,g代表全量,// 之间是正则,^$代表从头到尾没有任何字符,d代表删除
属于 :global
命令,格式为 :g/pattern/command
对匹配 pattern
的行执行 command
(这里是 d
删除),也就是说 删除或处理整行 → 用 :g
0d^ :代表删除从行首到第一个字符之间的空格, 0代表光标回到行首,d^代表删除从行首到第一个字符之间的空格
替换命令:
也就是说 修改行内内容 → 用 :%s/xxx/yyy/g 替换命令
:[range]s/pattern/replacement/[flags]
range
:指定替换范围(默认当前行)%
表示整个文件,1,5
表示1-5行,'<,'>
表示选中的行(可视模式)
pattern
:正则表达式(需注意 Vim 的语法差异)
replacement
:替换内容(支持引用捕获组)
flags
:控制替换行为(如 g
全局替换,c
确认)
捕获组与引用:
在 Vim 的正则表达式中,你可以通过 \(...\)
定义多个捕获组,然后通过 \1
, \2
, \3
等按从左到右的顺序引用它们
基本捕获组
案例1
:%s/^\(.*\)$/\1 : {{\1}}/g
: vim底部的命令
% 所有行
s 代表替换命令
/ 正则开始
^\(.*\)$ 这里代表当前行
/ 正则中间标识符
\1 代表上面(.\)的捕获组
: 增加了:
{{\1}} 在\1引用上增加了两个大括号
/ 正则结束
g 整个一行全部进行替换
结果
apple ---->>>> apple : {{apple}}
或者使用宏
qa " 开始录制到寄存器 a
0 " 跳到行首
y$ " 复制整行内容
A " 跳到行尾并进入插入模式
: {{<C-r>0}} " 输入 : {{ 粘贴复制的内容 }} 这里的<C-r>0引用0号寄存器的值,即y$复制的的值
<Esc> " 退出插入模式
q " 停止录制
然后执行全部行的话,即:%norm @a即可
案例2
:%s/\(\d\{4\}\)-\(\d\{2\}\)-\(\d\{2\}\)/日期:\1年\2月\3日/
结果
2023-09-15 ---->>>> 日期:2023年09月15日
案例3
:%s/\([a-z]\+\) \([0-9]\+\)/\2 \1/
结果
apple 123 ---->>>> 123 apple
嵌套捕获组
正则表达式 \(A\(B\(C\)\)\) 匹配 "ABC":
\1 → ABC(最外层分组)
\2 → BC(第二层分组)
\3 → C(最内层分组)
:s/\(\a\(\d\)\)/\1-\2/
\a 字母字符:匹配任意字母(等价于 [a-zA-Z])。
\+ 量词:匹配前导字符(此处是 \a)1 次或多次(相当于其他正则中的 +)
\d 等价于[0-9]
外层 \(\a\(\d\)\) 是 \1,内层 \(\d\) 是 \2
a3 ---->>>> a3-3
可以组合上述的两个命令:
:g/^#/s/old/new/g 先匹配以 `#` 开头的行,再在这些行中替换 `old` 为 `new
版权声明:本文标题:我记不住的那些vim知识(快速识记) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1747522570a2701565.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论