加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在VIM中自动插入插件

发布时间:2020-12-15 22:01:11 所属栏目:安全 来源:网络整理
导读:我想快速修改文档 00011011 看起来像 000001010011100101110111 当然我可以做暴力(如上所示),但我想快速做,因为我发现我做了很多这些.到目前为止,我的方法是猛拉并粘贴4Y 4j 4P 0001101100011011 然后有一个命令在每行之前插入0次4次吗?我知道它有点像4,i,e
我想快速修改文档

00
01
10
11

看起来像

000
001
010
011
100
101
110
111

当然我可以做暴力(如上所示),但我想快速做,因为我发现我做了很多这些.到目前为止,我的方法是猛拉并粘贴4Y 4j 4P

00
01
10
11
00
01
10
11

然后有一个命令在每行之前插入0次4次吗?我知道它有点像4,i,esc ~~我希望它是4轮0(向左移动),插入模式,插入0,重新命令模式.

谢谢

解决方法

>使用视觉块模式:

y3j
<C-v>3j
I0<Esc>
'>
p
<C-v>3j
I1<Esc>

可以从1填充开始并使用P跳过’>:

y3j
<C-v>3j
I1<Esc>
P
<C-v>3j
I0<Esc>

>仅使用Ex命令:

:,+3y<CR>
:,+3norm! I0<CR>
:put
:<Up> "use commandline history to save some typing
<Backspace>1<CR>

>使用替换和正常模式命令的混合:

y3j
:,+3s/^/0<CR>
p
:<Up>
<Backspace>1<CR>

如果你这么做,那么在宏中录制这可能是最好的策略.那时,实际的填充是如何完成的并不是真正相关的,因为你唯一的输入就是@x而且宏可能是瞬时的.

你在录音期间所做的事情并不重要,这里有一个例子:

qx
y3j
:,+3s/^/0<CR>
p
:,+3s/^/1<CR>
q

假设你有这个:

[0]0
01
10
11

点击@x将上面的内容变为:

000
001
010
011
100
101
110
111

您的宏将保存到寄存器x中,并且仍可用于下一个Vim会话.

我相信有人可以想出一个漂亮的衬垫.

编辑

上面的宏的逐步说明:

> qx,在寄存器x中开始记录(它可以是任何可用的寄存器).
> y3j,猛拉当前行和接下来的三行.
>:,不需要解释.
>,3,这是我们正在研究的范围.定义此范围的更正确的方法是.,3.范围的起始行和结束行由逗号分隔.

起始行是当前行,我们可以省略它以保存一些类型,因此我们留下了昏迷,接着是结束行,相对于当前行表示,3.
> s / ^ / 0< CR&gt ;,这是一个简单的替换. 搜索模式中的^表示“行的开头”.它与第一个字符不匹配,所以它非常适合像这样的情况,我们想要在线上添加一些东西. 所以,基本上我们在前面添加一个0.它可以是你想要的任何东西. 对范围执行替换时,将对范围的每一行执行替换.在这里,我们有四行,所以每行前面都有一个0.
>< CR>,是……嗯……< Enter>用于执行替换的键.
> p,粘贴我们在当前行之下拉出的四条线.
>:,3s / ^ / 1< CR&gt ;,与之前相同但是为1.
> q,结束录音.

并且,为了回答您的评论,以下是您如何转变:

00
01
10
11

进入:

00 0.0
01 0.0
10 0.0
11 0.0

你需要使用另一个“锚”. ^是“行的开头”,$是“行的结尾”,因此替换变为:

:,+3s/$/ 0.0

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读