vim实用技巧读书笔记(4)

本文介绍Vim编辑器的高级使用技巧,包括利用表达式寄存器进行快速计算、使用字符编码或二合字母插入特殊字符的方法,以及如何使用替换模式和可视模式提高编辑效率。
技巧16 随时随地做运算

表达式寄存器允许我们做一些运算,并把运算结果直接插入到文档中

表达式寄存器是一个另类,可以用来执行一段vim脚本,并返回结果.在本节中,我们将把它当做计算器使用.传给他一个简单的表达式,比方说1+1,它就会给出结果2.

我们可以用 = 符号指明使用表达式寄存器. 在插入模式中,输入<C-r>=就可以访问这一寄存器.这条命令会在屏幕下方显示一个提示符,我们可以在其后输入要执行的表达式,输入表达式后敲一下,Vim就会把执行的结果插入到文档的当前位置.

举例:
假设我们刚刚输入完了下列内容:

6 chairs, each costing 35,totals210

A 到文件末尾
<C-r>=6*35

技巧17.用字符编码插入非常用字符
vim可以用字符编码(Character Code) 插入任意字符.
根据字符编码插入字符,只需在插入模式中输入<C-v>{code}
即可,其中{code}是要插入的字符的编码.
例如<C-v>065
如果想插入一个编码超过三位数的字符该怎么办?
例如<C-v>u00bf

如果你想知道文档中任意字符的编码,只需把光标移到它上面并按ga命令,当然,如果你想知道文档中不存在的字符编码,就只能去查一下unicode表了.

另外,如果<C-v>命令后面跟了一个数字键,他会插入这个按键本身所代表的字符.例如,如果启用了”expandtab”选项,那么按键将会插入空格而不是制表符.然而,按则会一直插入制表符,不管’expandtab’选项激活与否.

插入非常用字符
<C-v>{123} #以十进制字符编码插入字符
<C-v>{1234}#以十六进制编码插入字符
<C-v>{nondigit} # 按原义插入非数字字符
<C-k>{char1}{char2} # 插入以二合字母{char1}{char2}表示的字符.

技巧18 用二合字母插入非常用字符

虽然Vim允许我们用数字编码插入任意字符,不过这既难记忆也难输入,可以用二合字母来插入非常用字符.

<C-k>{char1}{char2}即可
想要输入二合字母?I表示的”¿”字符,可以简单的输入<C-k>?I

例如:左右书名号«»分别以二合字母<<及>>表示,
普通分数(或常用分数)½,¼和¾则分别以二合字母12,14,34来表示,vim的缺省二合字母集依从一定的惯性. :h digraphs-default
文档对此进行了总结.

用命令 :digraphs 可以查看可用的二合字母列表.也可以使用:h digraph-table来查看另一个更为有用的列表.

技巧19 用替换模式替换已有文本

Typing in Insert mode extends the line. But in Replace mode the line length doesn’t change.

操作:
f.
R,␣b

Typing in Insert mode extends the line, but in Replace mode the line length doesn’t change.

用虚拟替换模式替换制表符
某些字符会使替换模式变得复杂化,以制表符为例,在文件中它以单个字符表示,但是在屏幕上他会占据若干列的宽度,此宽度由”tabstop”设置决定(参见:h “tabstop”)如果光标移到制表符上,然后进入了替换模式,那么我们所输入的下一个字符会替换制表符,假设 ‘tabstop’选项设置为8,那么该操作的结果就是把8个字符替换成一个字符,这将大幅缩短当前行的长度.

不过vim还有另外的一种替换模式,成为虚拟替换模式.该模式可由gR命令触发,它会把制表符当做一组空格进行处理,假设我们把光标移到一个占屏幕8列宽的制表符上,然后切换到虚拟替换模式,在输入前七个字符时,每个字符都会被插入到制表符之前,最后,当输入了第八个字符时,该字符会替换制表符.

作者建议在可能的情况下,尽量使用虚拟替换模式.
vim也提供了单次版本的替换模式以及虚拟替换模式,r{char}和gr{char}命令允许我们覆盖一个字符,之后马上回到普通模式.

第四章

技巧20 深入理解可视模式

我们熟知的很多普通模式命令,可以在可视模式中完成同样的功能,我们仍可以把h,j,k,l当做光标键使用,也可以使用f{char}跳到当前行的某个字符上,然后用;和,命令相应地正向或反向重复此跳转.甚至还可以用查找命令n/N命令,跳转到匹配指定模式的地方.

在普通模式中,我们先触发修改命令,然后使用动作命令指定其作用范围.而在可视模式中,我们先选中选区,然后再触发修改命令,

例如把光标移动到单词March的某个位置,然后执行viw来高亮选择这个词.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值