例如,
while( pasteInHere )
{
cin >> n; // Delete this line completely with dd
}
当我用上面的代码执行此操作时,我得到:
while( pasteInHere )
cin >> n; // Delete this line completely with dd
{
}
,它与我想要的结果相差很远...我如何抑制这种换行行为,或使用另一种非常有效的方法?我认为d $不好,因为我不仅必须转到行首,而且如果我也想删除空行,我也需要在另一个寄存器中删除它,我觉得应该有一个更简单的方法!谢谢。
#1 楼
您可以在要删除的行上方的行中的任意位置,然后按JD
并将其粘贴到p
的所需位置。 J
合并这两行,并在要删除的文本的开头移动您。这将删除换行符和要移动的行的缩进。 D
从当前光标位置删除到行尾,但保留换行符。 提示:如果您用
:pu
删除或用D
拖了,并且要粘贴新行,则可以使用y$
。 #2 楼
并不是很简单,但是效率略高,您还可以为这两个序列创建法线模式映射:摇晃:转到要移动的行,然后
^ D“ _dd
粘贴:转到要替换的单词,然后
viwp
#3 楼
使用imap
可以实现一些很好的工作。将以下内容添加到您的vimrc
中:inoremap <c-a> <c-r>1<esc>k$Jxi
这将为CTRL-a创建一个映射,该映射将粘贴最后一个删除的文本(带有
dd
或类似的文本)。如果愿意,您当然可以使用其他键进行映射。参考文献:
:h i_CTRL-R
:h quote1
:h J
#4 楼
这对我也有点问题,以前从未考虑过对其进行优化,但是此映射有效:nmap dil ^d$
dil
是“在线删除”,类似于diw
,di"
等#5 楼
粘贴不带换行将此内容放入您的.vimrc文件:
" Paste yanked line without line breaks before/after cursor position
nnoremap gP i<CR><Esc>PkJxJx
nnoremap gp a<CR><Esc>PkJxJx
示例:
<span style="color:">danger</span>
现在您可以在正常模式下当光标位于
gp
时在#D51B3F
后面输入color:
插入:
。不用换行就可以换行
使用flukus的答案:
" Delete current line without yanking the line breaks
nnoremap dil ^d$
,作为删除内线的缩写。这也消除了前导缩进。
#6 楼
您可以按v
选择要复制的文本,然后按y
将其带入缓冲区,然后按p
将其粘贴到任何地方。它不会插入任何新行。评论
是的,但这仍然是空白。
–muru
15年7月21日在7:08
评论
除换行符外,是否可以删除整行?它不是重复的,就像我说的那样,我想要一种更有效的方法然后转到行首,我实际上也想删除带有换行符的完整行....不仅仅是行的内容
哦,我明白您的意思了。对我来说,你要完成的目标还不是很清楚。
0D删除行(换行符除外)。并比gJ加入路线。现在,您可以放置不带换行符和空行的文本。