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

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

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

支持,0 $

WRITING A RANGE OF LINES

:rangewrite <文件名>

注意:如果使用感叹号!强制写,感叹号必须紧跟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

相关推荐
星恒随风1 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
智学AI3 小时前
AI博主写作素材管理方法分享:资料归集、笔记关联与文档归档
人工智能·笔记
叼烟扛炮3 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
weixin_448119943 小时前
Datawhale Jev Cookbook 202610 笔记5
笔记
一木 之林4 小时前
Dify学习笔记 04 · 检索底座:Embedding、Rerank与向量数据库(第46-54集)
笔记·学习·embedding·dify
ljt27249606614 小时前
Python笔记(十一)--Numpy(一)
笔记·python·numpy
芯思路4 小时前
STM32开发学习笔记之十【AI部署】
笔记·stm32·学习
江屿风5 小时前
【Plain Language Large Model】【从浏览器到全栈:一课精通Node.js三剑客】流食般投喂
笔记·前端框架·npm·node.js·js·npx
qinglongcn5 小时前
Agent 可能出什么事——五类异常与应对
人工智能·编辑器·ai编程
一只大鸽子5 小时前
游戏开发笔记0-Godot启动
笔记·游戏引擎·godot