vim学习笔记-高级用法

vim高级使用
1、寄存器
vim提供了几十组寄存器,用于保存文本
为命令添加 "{register}  表示指定要使用的寄存器。若不指定,将缺省用unnamed无名寄存器,即(")
"x    表示引用了寄存器x

a-z: 都可以用作寄存器名。"ayy把当前行的内容放入a寄存器。
A-Z: 用大写字母索引寄存器,可以在寄存器中追加内容。 如"Ayy把当前行的内容追加到a寄存器中。
:reg[ister] 查看{register}中的内容
"0    复制专用寄存器  (复制的时候,不仅会把内容拷贝到无名寄存器中,还会拷贝到此寄存器),来源为yy命令
"1-"9 删除缓存,来源为dd命令
"a-"z 自定义的寄存器,不会被系统自动冲刷,总是存储最后一次使用的值。
"A-"Z : 向"a-"z寄存器中追加新内容而不是覆盖,虽然"A-"Z本身不是寄存器,但是却可以引用。
"ayy  复制当前行并将其存放在"a寄存器中
"_    黑洞寄存器(实际上并没有存储,如果"_d{motion}会执行真正的删除),只进不出
""    unnamed 无名寄存器,如果没有指定要使用的寄存器,vim会缺省使用此寄存器,文本来源命令d/c/s/x/y
"*:  当前选择缓冲区,"*yy把当前行的内容放入当前选择缓冲区。
"+:  系统剪贴板寄存器 (使用"+p来粘贴系统剪贴板的内容)(X11剪切板,用剪切、复制与粘贴命令操作)。vim安装时需安装clipboard才能使用此功能
"=    表达式寄存器.在插入模式下ctrl+r= ,会进入命令行模式,输入表达式回车之后的结果将插入文本中
"%    存储了当前文件名
"#    存储了轮换文件名 编辑两个文件1.txt 2.txt切换到第二个文件,此时该寄存器标识上一个文件名
".    存储了上次插入的文本
":    存储了上次执行的Ex命令
"/    存储了上次查找的模式
’%’、’:’ 和 ’.’为只读寄存器。你只能在 "p"、"P"、":put" 命令和 CTRL-R 的时候使用它们

使用示例:
"fyy     将复制的内容存储到f寄存器
"fp      将f寄存器中的内容粘贴出来
"ay2+    复制当前行及下面2行(共3行)到a寄存器
"ay’a    复制光标所在行到标记a所在行之间的内容,包括光标和标记所在的行
"ap      将a寄存器中的内容粘贴出来
:1,10 y a(将1到10行这几行的内容拷贝到一个名字为a的buffer中)
:put     a(将buffer a中的内容拷贝到当前位置)。

在插入模式,当我们按下CTRL + R键,再加上相应的寄存器的名字,可以插入寄存器中的内容,按=时,会在命令行出现=,输入表达式,会将表达式的计算结果插入光标处

2、宏
把命令序列录制成宏,在normal,q键开始/停止录制宏。
开始录制:
q{register} 表示指定将宏录制到哪个寄存器中
停止录制:
再次按q,停止录制
播放:
@{register} 表示执行寄存器中的命令

宏寄存器内容追加:
qa  录制按键操作,并覆盖a寄存器中原有内容
qA  录制按键操作,并追加到a寄存器中

@@  重复最近调用过的宏
100@@   重复播放 100 上次的宏
[count]@{register}  执行count次宏,串行方式;遇到错误,就返回
:'<,'>normal @{register} 并行
:reg {register} 查看寄存器中的内容,但不列出用于:redir目的地的寄存器。

在插入模式中,插入寄存器中的内容:
ctrl+r{register}   将寄存器中的内容插入到文本中

编辑宏:宏中使用的是键盘编码,如果使用ctrl-r{register}的方式获取的寄存器内容不一样。不过,可以使用将寄存器中的内容粘贴出来的方式。
输出到文本中编辑
"{register}p  会粘贴到光标后,所以要用:put 输出到下一行
:put {register}将寄存器内容输入到文本中,编辑完成之后,跳到行首,通过"{register}y$,复制到寄存器中,或进入可视模式,选中需要的内容,再输入d,将内容添加到寄存器中。
:let @{register}=......  使用函数编辑寄存器内容

如果我们希望创建一个以插入模式结束的宏,则必须以另一种方式结束该宏(键入“q”将仅插入字母q)。我们可以在插入模式下执行普通模式命令CTRL-O,然后键入“q”来结束宏的录制。

3、编译
vim提供了:make来编译程序,默认调用的是make, 如果你当前目录下有makefile,简单地:make即可。
如果你没有make程序,你可以通过配置makeprg选项来更改make调用的程序。 如果你只有一个abc.java文件,你可以这样设置:
set makeprg=javac\ abc.java
然后:make即可。如果程序有错,可以通过quickfix窗口查看错误。 不过如果要正确定位错误,需要设置好errorformat,让vim识别错误信息。 如:
:setl efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%#
%f表示文件名,%l表示行号, %m表示错误信息,其它的还不能理解。 请参考 :help errorformat。

4、quickfix用法
:cw    如果有信息列表,则打开quickfix窗口;否则什么也不做
:cl    列出所有信息
:cc    显示详细信息
:cp    跳到上一项
:cn 下一项
:cr 定位到第一个项。
:copen    打开quickfix窗口,可添加窗口高度参数,单位为行
:cclose    关闭quickfix窗口
:cold[er]    到前一个旧列表
:cnew    到后一个新列表

quickfix-list vs location-list
quickfix list 是全局的,相对于窗口而言,不同的窗口共用一个 quickfix list,可以使用 :cw 或者 :copen 打开;而 loaction list 是局部于某个特定窗口的,即不同窗口的 location list 可以不同,使用 :lw 或者 :lopen 命令打开。

5、Vim 补全模式
参考:http://bluegene8210.is-programmer.com/posts/27873
K 模式    (Vim 默认: CTRL-X CTRL-K) -- 字典补全,查找字典文件中的匹配单词,组成补全列表
H 模式    (Vim 默认: CTRL-X CTRL-T) -- 分类补全,查找分类文件(thesaurus 文件)中的匹配单词,组成补全列表
S 模式    (Vim 默认: CTRL-X s)        -- 拼写建议
O 模式    (Vim 默认: CTRL-X CTRL-O) -- 全能补全,由一个自定义函数生成补全列表
U 模式    (Vim 默认: CTRL-X CTRL-U) -- 自定义补全,也是由自定义函数生成补全列表
n 模式    (Vim 默认: CTRL-N)        -- 关键字补全,查找 'complete' 选项指定文件中的匹配单词,组成补全列表
N 模式    (Vim 默认: CTRL-X CTRL-N) -- 关键字补全,查找当前 buffer 里的匹配单词,组成补全列表
p 模式与 P 模式,分别与 n 模式和 N 模式相同,只是补全列表中候选词的排序相反。
T 模式    (Vim 默认: CTRL-X CTRL-]) -- tag 补全,查找 tag 中的匹配单词,组成补全列表
I 模式    (Vim 默认: CTRL-X CTRL-I) -- 头文件补全,查找当前 buffer 和 include file 中的匹配单词,组成补全列表
D 模式    (Vim 默认: CTRL-X CTRL-D) -- 定义补全,查找当前 buffer 与 include file 中匹配的名称定义,组成补全列表
V 模式    (Vim 默认: CTRL-X CTRL-V) -- Vim 补全,查找 Vim 的命令名, 函数名等等,组成补全列表
F 模式    (Vim 默认: CTRL-X CTRL-F) -- 文件名补全,查找匹配的路径或文件名,组成补全列表
L 模式    (Vim 默认: CTRL-X CTRL-L) -- 整行补全,查找 'complete' 选项指定文件中匹配的整行内容,组成补全列表

6、redir 重定向
vim中把命令输出(譬如::version, :cl的输出)保存下来
:redir @a>      "重定向到寄存器a中
:redir > 1.txt  "重定向到文件
:redir END      "结束重定向
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值