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

相关推荐
LaLaLa_OvO10 分钟前
jetbrains 的 datagrip 导出csv,中文乱码
笔记
大囚长23 分钟前
权力的哲学洞察与反思
笔记
望眼欲穿的程序猿1 小时前
苹果系统使用VsCode开发QT
ide·vscode·编辑器
java_logo1 小时前
SiYuan 思源笔记 Docker 部署终极指南:Windows+Linux 双平台
windows·笔记·docker·思源笔记·思源笔记部署·docker部署思源笔记·思源笔记文档
d111111111d2 小时前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习
愚昧之山绝望之谷开悟之坡2 小时前
什么agentskill.io大白话说清楚
笔记
其实防守也摸鱼3 小时前
带你了解与配置phpmyadmin
笔记·安全·网络安全·pdf·编辑器·工具·调试
RENMinWanSui!3 小时前
Neo4j-Desktop2.0安装教程(更改安装路径)
笔记·neo4j·neo4j-desktop
噜噜噜阿鲁~3 小时前
python学习笔记 | 8.2、函数式编程-返回函数
笔记·python·学习
Rsun045513 小时前
Oracle中常用语法
编辑器