Как развернуть / свернуть разделы в Vimdiff? - PullRequest
289 голосов
/ 13 марта 2011

Я начал использовать vimdiff сегодня и хотел сделать некоторые вещи, которые я считал само собой разумеющимся в редакторах diff на основе Windows (например, развернуть / свернуть раздел diff, иметь полное расширение файла / только diff с 3 контекстами)линии выше или ниже и т. д.).В настоящее время я знаю только следующие команды:

Комбинации клавиш:

  • d o - Получить изменения из другого окна втекущее окно.

  • d p - поместить изменения из текущего окна в другое окно.

  • ] c - Перейти к следующему изменению.

  • [ c - Перейти к предыдущему изменению.

  • CTRL + W , w - Перейти к другому разделенному окну( CTRL + W , CTRL + W делает то же самое, если вы отпустите CTRL чуть позже)

Может ли кто-нибудь указать мне правильное направление, чтобы я мог воспроизвести похожие функции?

Было бы неплохо, если бы я мог развернуть / свернуть линиивокруг различий, например.

Ответы [ 4 ]

228 голосов
/ 14 марта 2011

Помимо тех, что вы упомянули, я часто использую только для сравнения:

  • :diffupdate :diffu -> пересчитать diff, полезно, когда после внесения нескольких изменений vim непоказывая минимальные изменения больше.Обратите внимание, что это работает, только если файлы были изменены внутри vimdiff.В противном случае используйте:
    • :e, чтобы перезагрузить файлы, если они были изменены вне vimdiff.
  • :set noscrollbind -> временно отключить одновременную прокрутку на обоих буферах, включить ее на :set scrollbind и прокрутку.

Большая часть того, что вы просили - это сворачивание: глава руководства пользователя vim по складыванию .Вне различий я иногда использую:

  • zo -> открытый сгиб.
  • zc -> закрытый сгиб.

Но вы 'Вероятно, будет лучше обслуживать:

  • zr -> снижение уровня сворачивания.
  • zm -> еще один уровень сворачивания, пожалуйста.

или даже:

  • zR -> Полностью уменьшите складывание, я сказал!.
  • zM -> Сверните Мост!.

Другое, о чем вы просили, используйте n линий сгиба, можно найти в разделе справочного руководства vim для опций , в разделе в diff :

  • set diffopt=<TAB>, затем обновите или добавьте context:n.

Вам также следует ознакомиться с разделом руководства пользователя в diff .

4 голосов
/ 20 августа 2014

установить vimdiff для игнорирования регистра

Запустив vim diff с

 gvim -d main.sql backup.sql &

Я нахожу, что один файл, к сожалению, содержит ключевые слова MySQL в нижнем регистре, а другой в верхнем регистре, показывающий различия практически в каждой строке

:set diffopt+=icase

это обновляет экран динамически, и вы можете так же легко отключить его снова

3 голосов
/ 18 января 2013

На самом деле, если вы сделаете Ctrl+W W, вам не нужно будет добавлять это дополнительное Ctrl.Делает то же самое.

0 голосов
/ 04 мая 2016

Ctrl + W, W, как уже упоминалось, может использоваться для перехода от панели к панели.

Теперь вы можете выбрать одно конкретное изменение и вставить его на другую панель следующим образом. Вот, например, я даю пример, как если бы я хотел изменить свой кусок кода с панели 1 на панель 2 и в данный момент мой курсорнаходится в панели1

  • Используйте Shift-v, чтобы выделить строку, и используйте клавиши вверх или вниз, чтобы выбрать фрагмент кода, который вам требуется, и продолжайте с шага 3, описанного ниже, чтобы вставить свои изменения вдругая панель.

  • Используйте визуальный режим, а затем измените его

    1 щелкните «v», чтобы перейти в визуальный режим 2, используя клавиши вверх или вниз, чтобы выбрать нужныйкод 3 нажмите, Esc, клавишу «Esc» 4. Теперь используйте «yy» для копирования или «dd», чтобы вырезать изменения. 5 «Ctrl + w, w» для перехода на панель 2. 6 «p» вставьте изменения в нужное вам место.

...