如何实现“;粘贴-d'␣'”;Vim中的开箱即用行为?
Vim能做些什么来影响粘贴-d'shell吗 命令,然后通过如何实现“;粘贴-d'␣'”;Vim中的开箱即用行为?,vim,paste,Vim,Paste,Vim能做些什么来影响粘贴-d'shell吗 命令,然后通过运行它:r!粘贴-d“” < P>什么是本地VIM命令,如果有的话? 首先,让我们考虑一个稍微不同但紧密相关的。 问题:立即将一个行范围追加到另一个行范围 在它之前。解决它之后,我们将返回到原始状态 问题的第二部分是答案,并将展示 原始问题可以简化为建议的问题 1.在不限制一般性的情况下,我们假设 行块(要附加第二行的行)从 缓冲区的第一行,并且光标位于最后一行 第一个街区的那条线。在这种情况下,可以使用 以下是简短有效的Ex命令: :
运行它:r!粘贴-d“”
< P>什么是本地VIM命令,如果有的话?
首先,让我们考虑一个稍微不同但紧密相关的。 问题:立即将一个行范围追加到另一个行范围 在它之前。解决它之后,我们将返回到原始状态 问题的第二部分是答案,并将展示 原始问题可以简化为建议的问题
1.在不限制一般性的情况下,我们假设 行块(要附加第二行的行)从 缓冲区的第一行,并且光标位于最后一行 第一个街区的那条线。在这种情况下,可以使用 以下是简短有效的Ex命令::1,g/^/''+m.|-j!
此:global
命令在从第一行到第二行的范围内运行
当前的一个,依次执行两个Ex命令:“”+m.
和
-j代码>。前者,:move
命令删除该行旁边的行
放置光标的位置,并将其插入到
一个当前正在由:global
命令处理。后者,,
:join
命令,将刚移动的行附加到上面的行(不带
由于!
修饰符,在它们之间添加或删除空格)
这些命令的构造利用了两个隐式
事实。首先,在执行:global
中指定的命令之前
在另一行中,光标位于
那条线。这意味着引用为
的地址对应于
当前正在其上运行命令的最新行。第二
将:global
命令发送到执行之前的光标位置为
添加到跳转列表中。因此,该位置可以在
范围通过”
伪标记(请参见:help:range
)
如果需要在连接线之间放置分隔符,可以
添加替换命令,在执行:join
之前插入它:
:1,g/^/''+m.|s/^/\t/|-j!
有一个默认Vim语句分离行为选项
当运行:join
命令时不使用代码>修改器:
:1,g/^/''+m.|-j
有关该空间分隔行为的详细信息,请参见:help J
,
:帮助:加入
,尤其是可以通过
:helpg这些命令,除了“gJ”
2.该技术很容易适用于所讨论的问题,
因为最初的情况可以缩小到我们现在的情况
如上所述。为此,请转到包含
要追加和复制它们的行
:%y
然后,切换到包含要附加到的文本的目标缓冲区,
并将复制的行粘贴到缓冲区当前内容的下方
:$pu|'[-
上述命令结合了两个操作:
将未命名寄存器的内容粘贴到最后一行下面,
将光标移动到粘贴文本的最后一行
将光标移动到粘贴前的最后一行
在此基础上,可以使用前面提出的:global
命令之一
马上。当然,可以同时发布粘贴和
在一次运行中转换:
:$pu|'[-|1,g/^/''+m.|s/^/\t/|-j!
My(除其他外)有gdp
和gdp
映射,它们将寄存器的内容粘贴为带有查询分隔符的最小拟合(即非矩形)块,就像paste-d{sep}
一样
就像@ib.的优秀答案一样,这首先需要将源缓冲区拉入寄存器
演示:
预期输出是什么?因为我似乎不能让它做任何事情,除了cat
。不是我的电脑坏了,就是我不明白它是怎么工作的。是否要用空格作为分隔符连接所有行?如果是这样的话,:s/\n/
就是这样做的。您有两个带数字的文件(一个在另一个下面),并且希望使用粘贴-d将所有文件1放在所有文件2的旁边(分隔符不相关)。只是想知道vim是否可以在没有外部命令的情况下完成这项工作。