Ответ 1
На самом деле для этого нет никакой команды, но вы могли бы отобразить свои собственные. Поместите следующее в свой vimrc, а затем используйте du, чтобы выполнить разблокировку.
nmap du :wincmd w<cr>:normal u<cr>:wincmd w<cr>
Если в командной строке я запустил
vimdiff file1 file2
Я получаю экземпляр vim, у которого два файла открыты бок о бок. Предположим, что текст в файлах выглядит так (file1 находится слева, file2 - справа):
╔═══════╤═══════╗
║foo │-------║
║bar │bar ║
║grue │-------║
║~ │~ ║
║~ │~ ║
╚═══════╧═══════╝
Теперь предположим, что мой курсор находится на "f" "foo" и что я хочу скопировать первую строку файла1 в первую строку файла2.
Один из способов сделать это - выбрать и выдернуть (скопировать) строку с помощью v $y, а затем использовать Ctrl + wl, чтобы переместить курсор на первой строке файла2, а затем введите p, чтобы вставить скопированную строку. Если я это сделаю, и тогда я решил, что я действительно не хочу этого делать, я могу нажать u, чтобы отменить команду вставки, которую я выполнил в файле2.
Другой способ сделать это - использовать команду diff put dp. Однако, если после этого я решил, что не хотел этого делать, я не могу его отменить, просто нажав u, потому что мой курсор все еще находится в файле1 и u отменяет последнее изменение файла1, а не последнее изменение файла2. Поэтому вместо этого я должен использовать Ctrl + wl или Ctrl + ww, чтобы переместить курсор в окно для файла2, а затем нажмите u.. p >
Итак, мой вопрос: после того, как я использовал dp, как указано выше, есть ли какой-либо простой способ для его отмены, не переместив курсор на другое окно файла?
На самом деле для этого нет никакой команды, но вы могли бы отобразить свои собственные. Поместите следующее в свой vimrc, а затем используйте du, чтобы выполнить разблокировку.
nmap du :wincmd w<cr>:normal u<cr>:wincmd w<cr>
Зависит от того, как работает ваш рабочий процесс, но я обычно использую d o для получения diff в мой файл, а не d p, который переносит diff в другой. Таким образом вы можете использовать u и ctrl + r, как обычно.
Так как команды навигации diff работают одинаково из любого из файлов, вы должны быть хорошими!
next diff: ]c
prev diff: [c
При сравнении файлов мне нравится использовать vimdiff
или vim -d
. Способ копирования изменений с помощью vimdiff
:
]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
Это работает как:
:diffget the same with do
:diffput the same with dp