Как развернуть/свернуть разделы 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", чтобы вставить изменения, где вам нужно