Как развернуть/свернуть разделы diff в Vimdiff?
Я начал использовать vimdiff сегодня и хотел сделать некоторые из вещей, которые я принял как должное, в Windows-редакторах с расширением (например, развернуть/свернуть раздел diff, иметь полное расширение файла/только отличается от 3 контекста линии выше или ниже и т.д.). В настоящее время я знаю только следующие команды:
Горячие клавиши:
-
do
- Получить изменения из другого окна в текущее окно.
-
dp
- Поместите изменения из текущего окна в другое окно.
-
]c
- Переход к следующему изменению.
-
[c
- перейти к предыдущему изменению.
-
Ctrl + W, W - перейти в другое разделенное окно (CTRL-W CTRL-W делает то же самое
вещь, если вы отпустите клавишу CTRL чуть позже)
Может ли кто-нибудь указать мне в правильном направлении, чтобы я мог реплицировать подобные функции?
Было бы неплохо, если бы я мог, например, расширять/сворачивать строки вокруг diff.
Ответы
Ответ 1
Помимо тех, о которых вы говорите, я часто использую их, когда различаю следующее:
-
:diffupdate
:diffu
→ пересчитать diff, полезно, когда после внесения нескольких изменений vim больше не показывает минимальных изменений. Обратите внимание, что он работает только в том случае, если файлы были изменены внутри vimdiff. В противном случае используйте:
-
:e
, чтобы перезагрузить файлы, если они были изменены вне vimdiff.
-
:set noscrollbind
→ временно отключить одновременную прокрутку на обоих буферах, повторно используя :set scrollbind
и прокрутку.
Большая часть того, что вы просили, складывается: глава руководства пользователя vim о сворачивании. Вне различий я иногда использую:
-
zo
→ открытая складка.
-
zc
→ close fold.
Но вам, вероятно, будет лучше служить:
-
zr
→ снижение уровня сгибания.
-
zm
→ еще один складной уровень, пожалуйста.
или даже:
-
zr
→ Уменьшить полностью складку, я сказал!
-
zm
→ fold Most!.
Другую вещь, которую вы просили, используйте n строк сгибания, можно найти в разделе справочной информации vim по параметрам через в разделе diff:
-
set diffopt=<TAB>
, затем обновите или добавьте context:n
.
Вы также должны ознакомиться с разделами руководства пользователя по сравнению.
Ответ 2
установить vimdiff, чтобы игнорировать регистр
Запустив vim diff с помощью
gvim -d main.sql backup.sql &
Я нахожу, что досадно, что один файл имеет ключевые слова MySQL в нижнем регистре, другие прописные, показывающие различия практически на каждой другой линии.
:set diffopt+=icase
это обновляет экран динамически, и вы можете так же легко отключить его снова
Ответ 3
Собственно, если вы выполняете Ctrl+W W
, вам не нужно будет добавлять этот дополнительный Ctrl
. Делает то же самое.
Ответ 4
ctrl + w, w, как упомянуто, можно использовать для перехода с панели на панель.
Теперь вы можете выбрать только одно изменение и вставить его в другую панель, как показано ниже. Здесь я даю пример, как если бы я хотел изменить свою часть кода с панели 1 на панель 2, и в настоящее время мой курсор находится в панели 1
-
С помощью Shift-v выделите строку и используйте клавиши "вверх" или "вниз", чтобы выбрать фрагмент кода, который вам нужен, и перейдите к шагу 3, написанному ниже, чтобы вставить изменения в другую панель.
-
Используйте визуальный режим, а затем измените его
1 клик 'v', это приведет вас в визуальный режим
2 используйте клавишу "Вверх" или "Вниз", чтобы выбрать требуемый код
3 нажмите кнопку Esc Esc
4 Теперь используйте "yy" для копирования или "dd", чтобы сократить изменение
5 do 'ctrl + w, w' для перехода к pane2
6 нажмите "p", чтобы вставить изменения, где вам нужно