admin 管理员组

文章数量: 1086167

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