【Vim】常用总结 (4)

有时候,我们需要在命令行中执行拷贝粘贴,例如 我们想要查找替换正文中的特殊字符,但我们又不知道怎么在命令行中输入这个特殊字符。
查找还好说,不一定非要在命令行中输入这个特殊字符,只要把光标放在这个特殊字符上,按*向下查找,按#向上查找。
但是如果我们要替换这个特殊字符,就必须在命令行中输入它了,但是又不知道怎么输入这个特殊字符,怎么办?
答案是拷贝粘贴,先在正文中复制这个字符,然后粘贴在命令行中。

可是怎么在命令行中实现粘贴呢?别急,介绍一个好东西:命令行窗口。
在正常模式下,输入q:,就打开了命令行窗口。
命令行窗口中都是我们输入过的命令,在这个窗口中我们可以像编辑正文一样编辑新的命令,或修改旧的命令。
因为像编辑普通缓冲区一样,自然可以拷贝粘贴了。
编辑完之后,在想要执行的命令上按回车,就ok了。
命令执行后,命令行窗口也自动关闭了。

命令行窗口

“历史记录”窗口显示以前使用的命令行命令的列表,但是不能从“历史记录”窗口执行该命令。若要在浏览时执行命令,请使用命令行窗口。有三个不同的命令行窗口:

q: Command-line window q/ Forward search window q? Backward search window

q(quick,快速的):

q::命令行命令编辑,可以看到所有使用过的命令的历史记录

q/:向前搜索命令编辑,可以看到所有使用过的向前搜索命令的历史记录

q?:向后搜索命令编辑,可以看到所有使用过的向后搜索命令的历史记录

运行 q: 以启动命令行命令的命令行窗口。Vim 将在屏幕底部启动一个新窗口。您可以使用 Up 或 Ctrl-p 键向上遍历,使用 Down 或 Ctrl-n 键向下遍历。如果按下回车,Vim 将执行该命令。若要退出命令行窗口,请按 Ctrl-c、 Ctrl-w c 或键入: quit。

类似地,要启动用于搜索的命令行窗口,可以运行向前搜索的 q/ 和向后搜索的 q?。

vim复制粘贴与寄存器的使用 Vim Normal模式复制粘贴

初学者会感觉Vim复制粘贴比较奇怪,先从normal模式学习

normal模式下复制粘贴分别使用y(yank)和p(put) ,剪贴d(delete)和p(put)

我们可以使用v(visual)命令选中所要复制的地方,然后使用p粘贴

配合文本对象:比如使用yiw复制一个单词, yy复制一行
Vim里的剪贴(Cut)复制(copy)粘贴(paste)
分别是delete/yank/put

Insert模式下的复制粘贴

很多人会使用鼠标进行选中,然后使用ctrl+v或者cmd+v粘贴

这个和其他的文本编辑器差不多,但是粘贴代码有个坑

很多人在vimrc中设置了autoindent ,粘贴Python代码缩进错乱
这个时候需要使用:set paste和:set nopaste解决

Ctrl-r {register}:可以粘贴寄存器{register}中的内容。

系统剪贴板寄存器为 "+

什么是Vim的寄存器?

你有没有好奇? Vim在normal模式下复制/剪贴的内容去了哪?

Vim里操作的是寄存器而不是系统剪贴板,这和其他编辑器不同

默认我们使用d删除或者y复制的内容都放到了“无名寄存器”

用x删除一个字符放到无名寄存器,然后p粘贴,可以调换俩字符

深入寄存器(register)

Vim不使用单一剪贴板进行剪贴、复制与粘贴,而是多组寄存器

通过"{register} 前缀可以指定寄存器,不指定默认用无名寄存器

比如使用"ayiw复制一个单词到寄存器a中,"bdd删除当前行到
寄存器b中

Vim中""表示无名寄存器,缺省使用。""p其实就等同p

其他常见寄存器

除了有名寄存器a-z, Vim中还有一些其他常见寄存器

复制专用寄存器"0:使用y复制文本同时会被拷到复制寄存器0

系统剪贴板 "+:可以在复制前加上 "+ 复制到系统剪贴板

其他一些寄存器比如 "%:当前文件名,".:上次插入的文本

:set clipboard=unnamed:可以让你直接复制粘贴系统剪贴板内容

强大的vim宏(macro) 从需求说起

从一个需求说起,给多行url链接加上双引号,你会怎么做呢?

【Vim】常用总结

什么是Vim宏(macro)

很多使用Vim很久的Vimer都没用过宏

宏可以看成是一系列命令的集合

我们可以使用宏「录制」一系列操作,然后用于「回放」

宏可以非常方便地把一系列命令用在多行文本上

如何使用宏

宏的使用分为录制和回放,是不是有种拍电影的感觉

Vim使用q{register}来录制,同时也是q结束录制

quick

使用q{register}选择要保存的寄存器,把录制的命令保存其中

使用q结束录制

使用@{register}回放寄存器中保存的一系列命令

用宏解决刚才的问题

现在你知道宏怎么用了,如何解决刚才的问题呢?

先给一行加上双引号,然后再回放到其他所有行

我们先使用q{register}开始录制,给一行加上双引号,之后使用q退出

在剩下的所有行中回放录制的宏(使用可视模式选中,然后使用宏)

需要使用v可视模式选择所有url,再使用:normal在命令模式下使用normal模式下的命令。

不使用宏解决刚才的问题

可以通过可视模式选择所有url
可以使用:normal,在命令模式使用normal模式的命令
:normal I"
:normal A"

vim补全大法 什么是补全?

只要手速快,补全什么的都是浮云

补全是根据当前环境上下文由编辑器“猜”你想输入的东西

比如补全一个单词、文件名,或者代码中的函数名、变量名等

Vim中提供了多种补全功能,还可以由插件拓展功能实现代码补全

vim中常用的补全

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypdsp.html