Як розгорнути / згорнути різні розділи у Vimdiff?


295

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

Гарячі клавіши:

  • do - Отримати зміни з іншого вікна в поточне вікно.

  • dp - Перемістіть зміни з поточного вікна в інше вікно.

  • ]c - Перейти до наступної зміни.

  • [c - Перейти до попередньої зміни.

  • CTRL+ W, w- Переключиться на інше розділене вікно ( CTRL+ W, CTRL+ Wробить те ж саме, якщо ви відпустите CTRLключ трохи пізніше)

Чи міг би хтось вказати мене в правильному напрямку, щоб я міг повторити подібні функції?

Було б непогано, якби я міг розширити / згорнути лінії, наприклад, на різниці.


2
Для швидкого доступу , щоб додати / повернути довгий список змін дивіться stackoverflow.com/q/6093746/212942
TCSGrad


1
Забавно бачити, що питання закрито через більше 4 років, і це 3 найкращих посади, коли "vimdiff" гугла!
TCSGrad

Відповіді:


241

Окрім тих, які ви згадуєте, я часто використовую лише те, коли розрізняю наступне:

  • :diffupdate :diffu-> перерахуйте різницю, корисну, коли після внесення кількох змін vim більше не показує мінімальних змін. Зауважте, що він працює лише в тому випадку, якщо файли були змінені в vimdiff. В іншому випадку використовуйте:
    • :e перезавантажити файли, якщо вони були змінені поза vimdiff.
  • :set noscrollbind-> тимчасово вимкнути одночасну прокрутку обох буферів, яку можна вмикати :set scrollbindта прокручувати.

Більшість того, що ви просили, - це складання: розділ керівництва користувача vim щодо складання . Поза різними я колись використовую:

  • zo -> відкрита складка.
  • zc -> закрити складку.

Але вам, мабуть, краще послужать:

  • zr -> зниження рівня складання.
  • zm -> ще один рівень складання, будь ласка.

або навіть:

  • zR -> Зменшіть повністю складку, я сказав!
  • zM -> скласти Мост !.

Інша річ, яку ви просили, використати n ліній складання, можна знайти в розділі посібника vim-довідника з опцій , через розділ на diff :

  • set diffopt=<TAB>, потім оновіть або додайте context:n.

Також слід ознайомитись з розділом керівництва користувача на розл .


Дуже всебічно! Я б ознайомився з посиланнями, які ви сказали, але залишаю питання відкритим ще пару днів, щоб побачити, чи отримаю я більше відповідей (я розміщував у вихідні, і не так багато людей будуть активними тоді).
TCSGrad

До речі, чи знаєте ви, чи можна використовувати vimdiff для об'єднання / тристороннього вирішення тощо? Це було б дійсно чудово тоді !!
TCSGrad

1
@ shan23 Для тривимірного злиття (для git) перевірте це . Там є коментарі і на svn. Тим не менш, намагаюся розібратися з командами, коли у вас є 4 буфери (do / dp не працює).
курінь

Щоб :set noscrollbindнабути чинності, його також слід :set nocursorbindвикористовувати, що не є типовим. Тому обидва варіанти повинні бути скориговані.
кривавий

4

встановити vimdiff ігнорувати випадок

Почавши vim diff з

 gvim -d main.sql backup.sql &

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

:set diffopt+=icase

це динамічно оновлює екран, і ви можете так само легко вимкнути його знову


Хоча це хороша порада, я не бачу, як це пов’язано з питанням (як розширити і згорнути різні розділи у vimdiff).
Пол


0

ctrl + w, w, як було зазначено, може використовуватися для навігації з панелі в панель.

Тепер ви можете вибрати певну зміну самостійно і вставити її на іншу область наступним чином. Ось я видаю, наприклад, як би я хотів змінити свій фрагмент коду з панелі 1 на панель 2, і в даний час мій курсор знаходиться в області1

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

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

    1 клацання "v", це переведе вас у візуальний режим 2 клавішею вгору або вниз виберіть потрібний код. 3 натисніть, Esc 'клавіша втечі 4 Тепер скопіюйте "yy" для копіювання або "dd", щоб зменшити зміну 5 do " ctrl + w, w ', щоб перейти до панелі2 6 натисніть "p", щоб вставити зміни, де потрібно


1
Цілість того, що ви вказали (крім першого рядка), є особливістю самого vim, а не vimdiff per say.
TCSGrad
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.