Shift + V (select line)
k or j; { or }; Up or down arrow keys (select more lines)
y (copy selected lines)
Ctrl + w, left/right arrow (move to other pane)
p (paste lines)
Vim作为键盘快捷键的主键,一定要具有执行相同任务的更简便方法。有一个吗?您使用什么来手动更新源代码更改?
#1 楼
您需要do
(差异获取)和dp
(差异投放)。这是此上下文中其他有用的正常模式命令的一小部分列表。]c - advance to the next block with differences
[c - reverse search for the previous block with differences
do (diff obtain) - bring changes from the other file to the current file
dp (diff put) - send changes from the current file to the other file
zo - unfold/unhide text
zc - refold/rehide text
zr - unfold both files completely
zm - fold both files completely
注意:
do
和dp
都可以工作在正常模式下但不是在视觉模式下,仅在一个块上或仅在一个块下的一行上。在视觉模式下选择文本行时,必须使用常规命令
:'<,'>diffget
和:'<,'>diffput
。另请参阅
:h copy-diffs
。:diffupdate
将重新扫描文件以进行更改。评论
真正。最初,整个(连续的)块被复制,因此我感到很困惑。这样,再加上diff模式自动隐藏相同的行,我发现自己在思考两个窗格中的每个动作之前,想着“到底发生了什么?”。假设您已更改其中一个文件的缩进;然后我想一切都会转移。对于更细粒度的控制(即,视觉选择),我发现需要完整的命令:[range] diffget和:[range] diffput。
– Alex Leach
2012年10月24日15:03
您可以将视觉模式与diffget和diffput一起使用:①进入视觉模式并标记一些文本/行。 ②然后输入:diffput将所选行推入另一个文件,或输入:diffget从另一个文件获取所选行。
–erik
13-10-8在17:46
感谢您对将光标放在下方的评论-我从上方尝试过,但是没有用
–hgolov
2015年5月1日下午6:54
嗨,有人知道对于仅一行来说,是否有等效的“做”(获得差)?假设您有一个不同的代码块(多于一行),用光标在这些代码的任何一行“执行”,仅这些代码下面的那一行将获得整个代码块的差异---但是我只想获得一个线的差异。每次我必须在视觉上选择此行,然后选择“ diffget”,这有点乏味...
–智慧
15年5月28日在9:37
重要的是要注意,撤消命令仅在已更改的缓冲区中起作用,因此,如果您使用dp并改变了主意,则需要切换到另一个缓冲区来撤消。
–Random832
15年6月11日在18:10
评论
感谢您将我对“这不是应该的”的含糊的理解引入一个有意义的问题。得出的答案是我很久以前就应该学到的。您问题的最佳答案在这里:stackoverflow.com/questions/5288875/…