Як увімкнути та використовувати складку коду у Vim?


Відповіді:


40

Ні , ви не повинні помістити команду зі сторінки ви пов'язані в вашому ~/.vimrc, ви можете просто ввести їх після видачі :в vimотримати запрошення командного рядка.

Однак якщо ви поставите рядки:

set foldmethod=indent   
set foldnestmax=10
set nofoldenable
set foldlevel=2

як зазначено у посиланні, яке ви надали, у своєму ~/.vimrc, вам не потрібно вводити їх кожен раз, коли ви хочете використовувати складання у файлі. set nofoldenableПереконується , що при відкритті, файли є «нормальними», тобто не складний.


У мене є код, який написано на C, Тож заступник на одній із своїх функцій. Я натискаю <kbd> esc </kbd>, щоб перейти до команди так, після:, я записую zc і нічого не відбувається.
Мохаммед Реза Резвані

1
@alex zc, після якого не слід вводити текст :. Ви вводите setкоманди після підказки, отриманої під час введення тексту :. zcВи набираєте , коли ви можете вільно переміщати курсор, так само , як ви б використовувати , ztщоб отримати текст курсор знаходиться на верхній частині поточного екрана.
Антон

40

Згорнути за замовчуванням

Метод складання за замовчуванням Vim manualозначає, що складки створюються вручну; не інакше, там немає складка бути закриті або відкриті з допомогою za, zoабо , zcяк ви описали. Але, ви можете створити складку zf{motion}у звичайному режимі або zfу візуальному режимі; наприклад, zfjстворює складку для поточної лінії та наступної наступної у звичайному режимі.

Згорнути indent

Прийнята відповідь від @Anthon описує, як встановити метод складання indent; тобто складання визначаються рівнем відступів.

Згорнути syntax

Більш зручним способом складання можуть бути створені автоматично на основі мовного синтаксису поточного буфера. Якщо ви використовуєте мову програмування, давайте назвемо її L , і ви маєте складне визначення L (наприклад, ви встановили плагін Vim, в якому визначена інформація про склад L , наприклад c.vim для C / C ++ або python -mode для Python), вам просто потрібно встановити метод складання syntax:

set foldmethod=syntax

Це воно. Найбільш корисні команди для роботи зі складками:

  • zo відкриває складку на курсорі.
  • zShift+ oвідкриває всі складки на курсорі.
  • zc закриває складку курсору.
  • zmзбільшує на foldlevelодиницю.
  • zShift+ mзакриває всі відкриті складки.
  • zrзменшується на foldlevelодиницю.
  • zShift+ rзменшується foldlevelдо нуля - всі складки будуть відкритими.

14

Не потрібно систематично користуватися нею: я зазвичай вручну вибираю складки за рухом або секцією. Наприклад, скласти абзац є zfipі скласти наступні 20 рядків zf20j. Використовуйте zaдля перемикання та zdвидалення.

Це вимагає трохи більше роботи, але дозволяє вашому складенню відображати завдання, що знаходиться під рукою.


4

Ви можете ввімкнути foldingпоточний сеанс, як-от відповідь @ Anthon. Але якщо ви хочете зробити його постійним, вам потрібно встановити принаймні цю лінію .vimrcдля складання роботи:

set foldmethod=indent

indent це вид складання, ви можете побачити більше з :help foldmethod

'foldmethod' 'fdm'      string (default: "manual")
                        local to window
                        {not in Vi}
                        {not available when compiled without the +folding
                        feature}
        The kind of folding used for the current window.  Possible values:
        fold-manual     manual      Folds are created manually.
        fold-indent     indent      Lines with equal indent form a fold.
        fold-expr       expr        'foldexpr' gives the fold level of a line.
        fold-marker     marker      Markers are used to specify folds.
        fold-syntax     syntax      Syntax highlighting items specify folds.
        fold-diff       diff        Fold text that is not changed.

Тепер, кожного разу, коли ви відкриваєте файл vim, ви можете бачити, як код згортається методом, який ви встановили. Потім ви можете використовувати za, zc, zo.


Не потрібно користуватися vimrc, я ніколи цього не робив, оскільки використовую складки лише зрідка
Anthon

@Anthon: О, звичайно. Я додам більше інформації у свою відповідь.
cuonglm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.