Vim User Manual 阅读笔记 usr_10.txt Making big changes 作较大改动

*10.1* Record and playback commands

"." command 重复执行上一个操作

  1. The "q{register}" command starts recording keystrokes into the register

named {register}. 录制击键宏. The register name must be between a and z.

  1. Type your commands.

  2. To finish recording, press q (without any extra character). 退出录制

用 @{register} 执行宏marcro

多次执行 3@a

USING REGISTERS

The registers used for recording are the same ones you used for yank and

delete commands.

用于录制宏的寄存器 register 和复制粘贴的寄存器是同样的,互通的

故,可以将宏粘贴出来,编辑后,再复制到寄存器。得到改进过的系列操作,再执行。

APPENDING TO A REGISTER

用小写字母表示的register

用大戏而字母可以追加append

暂时没看懂

*10.2* Substitution 替换 *find-replace*

如果文本中包含/ slash,需要在前面加backslash,最好用其他字符替代

USING A PATTERN IN A RANGE

从查找pattern到的行,得到查找区域,再查找指定的patter1

:?^Chapter?,/^Chapter/s=grey=gray=g

? 往回查找 ?^Chapter?,某一行开头为Chapter

/往前查找 /^Chapter/,往前查找某一行开头为Chapter

在两次Chapter之间,查找grey,并替换为gray,全局

ADD AND SUBTRACT

上述可能有点小问题,如果范围终止到第n-1行。

USING MARKS

可以用marks 书签,指定搜索范围

:'t,'b

VISUAL MODE AND RANGES

可视模式下visual mode下,按下: 冒号,屏幕左下方自动填入

:'<,'>

实际上 '< 和 '> 是marks ,实测是最近一次使用 v 模式选择的起始位置和终止位置

也可以混合在一起,例如: '>,$

A NUMBER OF LINES

修改当前的5行

5: 将会自动返显 : .,.+4

*10.4* The global command 全局命令

The ":global" command ,可以找到每一个{pattern},然后执行命令{command}

注意必须以冒号开头

:[range]global/{pattern}/{command}

:global 缩写为 :s

:substitute 缩写为 :s

例如:

:g+//+s/foobar/barfoo/g 替换C++文件包含注释符号的行,中的foobar改为 barfoo

*10.5* Visual block mode 可视模式

INSERTING TEXT 插入文字

在选中多行的某一列插入字符:

前面插入的I操作

CTRL-V 进入可视模式,j移动选中若干行,用<n>j上下移动;大写I<插入内容><Esc>,然后选中的所有行则插入内容。

如果选中的中间,某行不够长(短行),则该行不插入,其他行执行插入。

后面插入的A操作

类似上面。

但是在短行,后部也继续插入。

CHANGING TEXT 修改文字

c小写,类似上面的按列插入操作

C大写,类似上面的按列插入操作直到行末尾, 不够长的行可能不改动。

FILLING WITH A CHARACTER 以某字符填充一个区域

r改写一个,R原地不动直接覆盖改写

CTRL-V进入可视模式按块选择, j下移,l右移,选择按rx,则选中区域都填写为x,如果行短则短行不填写。

SHIFTING 左右移动

部分右移:CTRL-V进入可视模式按块选择......使用 ">" 把选中部分以右边的右移

部分左移:同上,使用 <

*10.6* Reading and writing part of a file

读取文件,放到当前文件的局部

:[range]read <文件名> 读取文件并放到[range]的最后一行后面。缩写为r

支持,0 $

WRITING A RANGE OF LINES

:[range]write <文件名>

注意:如果使用感叹号!强制写,感叹号必须紧跟write或者w,否则可能有歧义。

APPENDING TO A FILE

w后面跟>>

*10.7* Formatting text

:set textwidth=72 文本宽度

直接按命令 gqap 格式化当前段落 ------gq为操作, ap 表示当前段落

全文格式化 gggqG ------ gg跳转到首行,gq为操作, G跳转到末行

所谓格式化即划分换行

如果当前文件格式化不清楚:到第一行,gqj ------ 当前行和下一行格式化可能合并。然后按 . 重复执行

*10.8* Changing case

转大写 gUw , 整行转大写 gUgU , 缩写为gUU

转小写 guw , 整行整行转小写gugu,缩写为guu

转换大小写 g~, 转换整行 g~g~ 或者缩写为 g~~

*10.9* Using an external program 使用外部程序

:"!{motion}{program}"

! 告诉vim 执行 filter operation

!5G 敲回车 ------ 去第5行

!5Gsort 敲回车 ------ 从当前行到第5行 执行sort,这个时候左下角会自动转换为 : 命令展示

!! 通过filter传递命令 第一个!是filter,第二个是执行外部命令

The "!!" command filters the current line through a filter. In Unix the "date"

command prints the current time and date. "!!date<Enter>" replaces the current

line with the output of "date". This is useful to add a timestamp to a file.

例如上述在文件中加入日期的命令

似乎在可视模式下,选中状态时 用 !调用命令比较方便,不需要退到 : 命令模式

READING COMMAND OUTPUT 读取命令的结果

:read !<外部命令>

WRITING TEXT TO A COMMAND 将文本写入命令

:write !<外部命令> 注意感叹号前面有空格后面没有

WRITING TEXT TO A COMMAND

CTRL-L

相关推荐
hetao17338372 小时前
2026-01-14~15 hetao1733837 的刷题笔记
c++·笔记·算法
hetao17338373 小时前
2026-01-12~01-13 hetao1733837 的刷题笔记
c++·笔记·算法
Yu_Lijing3 小时前
基于C++的《Head First设计模式》笔记——外观模式
c++·笔记·设计模式
代码游侠3 小时前
学习笔笔记——ARM 嵌入式系统与内核架构
arm开发·笔记·嵌入式硬件·学习·架构
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [driver][base]container
linux·笔记·学习
June bug3 小时前
【实习笔记】配置Hosts
笔记
航Hang*3 小时前
Photoshop 图形与图像处理技术——第9章:实践训练3——图像修饰和色彩色调的调整
图像处理·笔记·学习·ui·photoshop·期末
huangyiyi666663 小时前
前端-远程多选搜索框不能反显的问题解决
前端·javascript·vue.js·笔记·学习
速冻鱼Kiel3 小时前
GASP笔记02
笔记·ue5·游戏引擎·虚幻
楠了个难3 小时前
AXI4接口简介——ZYNQ学习笔记24
笔记·学习·fpga开发