如果,在命令提示符下,我运行
vimdiff file1 file2
我得到一个vim实例,它有两个并排打开的文件.我们假设文件中的文本看起来像这样(file1在左边,file2在右边):
????????????????? ?foo ?-------? ?bar ?bar ? ?grue ?-------? ?~ ?~ ? ?~ ?~ ? ?????????????????
现在假设我的光标位于"foo"的"f"上,并且我希望将file1的第一行复制到file2的第一行.
一种方法是使用v $ y选择并移动(复制)该行,然后使用Ctrl + wl将光标移动到file2的第一行,然后键入p以粘贴复制的行.如果我这样做,然后我决定我真的不想这样做,我可以按你撤消我在file2中执行的粘贴命令.
另一种方法是使用diff put命令dp.但是,如果在执行此操作后我决定我不打算这样做,我无法通过按u来撤消它,因为我的光标仍在file1中,而u命令将撤消对file1的最新更改,而不是最多最近更改为file2.因此,我必须使用Ctrl + wl或Ctrl + ww将光标移动到file2的窗口,然后按u.
所以,我的问题是:在我使用上面的dp之后,有没有简单的方法让我撤消它而不必将光标移动到另一个文件的窗口?
实际上没有命令,但您可以映射自己的命令.将以下内容放在vimrc中,然后使用du进行diff undos.
nmap du :wincmd w:normal u :wincmd w
取决于你的工作流程如何,但我通常使用do获取差异到我的文件,而不是dp将差异放入另一个.这样你可以像往常一样使用u和ctrl+ r.
由于diff导航命令在任一文件中都是相同的,所以你应该很高兴!
下一个差异: ]c
prev diff: [c