Недавно я понял, что моя vimrc
длина теперь больше 400 строк (что для ИМО слишком много, я постараюсь уменьшить ее), и чтобы упростить навигацию, чтение и редактирование, я решил исследовать концепцию свертывания в vim (которая Я не был знаком с) .
- Я пытался установить метод сворачивания,
indent
но результат мне не понравился (это было слишком грязно, потому что большая часть моейvimrc
не имеет отступов). - Я также попытался установить
foldmethod
наexpr
и ,syntax
но я не был в состоянии сложить что - либо правильно. - Здесь использование в
diff
качестве метода складывания не представляется актуальным. (Или, если это так, я не понял, как его использовать) - Так что сейчас я использую
marker
метод , который не полностью удовлетворяет меня из-за"{{{
и"}}}
маркеров , которые я нашел «шумный» в файле.
Поэтому я хотел бы знать, есть ли лучшие практики или общие рекомендации по правильному сворачиванию avimrc
.
Примечание 1: Как мы все знаем, SO не форум и не предназначен для сбора личных мнений, и это не то, что я ищу: конечно, я думаю, что у некоторых людей есть свои предпочтения, но я хотел бы знать, почему маркеры (например) улучшают читаемость больше, чем с помощью отступа.
Примечание 2: Кроме того, моя главная цель - сделать мои vimrc
знания как можно более четкими, поэтому, если существуют другие лучшие практики для создания хороших идей, vimrc
мне это интересно.
Изменить 1: Я должен был уточнить, что мой vimrc
уже подразделяется на разделы (а иногда и подраздел), основными из которых являются
- общие настройки
- плагины (содержащие подраздел для каждого плагина и его конфигурации)
- отображения
- навигация (также содержит подраздел)
- цвет
- так далее...
И именно эта структура заставила меня задуматься о сворачивании: я чувствую, что возможность выводить только интересующий меня раздел в определенный момент является чем-то довольно удобным.
Редактировать 2: Ответ с упоминанием подразделов vimrc
в нескольких файлах действителен, но в качестве личного предпочтения я бы предпочел использовать свертывание, потому что я думаю, что проще поддерживать только один файл в репозитории git, содержащий мои точечные файлы. Это только личное предпочтение, и я знаю, что возможно также использовать этот подход, но я бы предпочел использовать свертывание.
"{{{
«vim like» способа работы, плагин с соляризацией использует это, и хотя это может быть шумно, он дает вам самый стандартный способ установки ручных сгибовОтветы:
У меня есть следующие режимы , на дне моего ,
vimrc
который я скопировал из godlygeek, автор табличной :Это сделает любую линию, начинающуюся со
"
сгиба 2+ . Чем больше"
, тем глубже складка. Это позволяет вам разделять разделы, если вам нужно.источник
>extra number of "
(начальный уровень, за которым следует число после <в этой строке) или'='
(используйте уровень предыдущей строки), значение можно найти по адресуfold-expr
Хорошей идеей будет сначала определить свои собственные категории
.vimrc
(например, список с подсписками и подсписками) и добавить все свои плагины / настройки / функции в соответствующие категории. В сочетании с индивидуальным складыванием это может прекрасно работать:В приведенном выше примере показаны возможные категории, которые я считаю полезными для структурирования своих
.vimrc
. Используются следующие индивидуальные настройки сгиба:Чтобы определить свои собственные категории и подкатегории, используйте следующий синтаксис:
Категория верхнего уровня может быть создана очень просто, если вы используете vim-snippets (например, с UltiSnips ): просто разверните
box
илиbbox
фрагмент, предоставленный vim-snippets (напишитеbox
илиbbox
и нажмите триггер расширения).Чтобы открывать и закрывать складки еще быстрее, дважды нажмите пробел:
Таким образом, вы имеете хорошо структурированную, по
.vimrc
которой легко ориентироваться.источник
Я использую свой основной
vimrc
как ссылку на несколько других категоризированных файлов, выбирая каждый из них, например, параметры Vim в одном файле, настройки плагина в другом.В качестве более прямого ответа на вопрос OP, я использую маркерный метод, но с правой стороны с интервалом, и по большей части вокруг большего количества категорий, чем отдельных, по большей части. Я делаю каждый плагин отдельно, хотя.
источник
vimrc
в разных файлах, потому что (IMO) это увеличивает сложность и усложняет обслуживание. Что касается складывания, что вы подразумеваете под "с правой стороны с разнесением"?" {{{
столько пробелов, сколько у вас,textwidth
поэтому маркеры находятся у правых краев. У меня также есть персонализированная функция FoldText в файле fold.vim. Я предпочитаю отдельные файлы, чтобы мой git-репо имел только один конкретный тип мода на коммит.Вы могли бы сказать, что «наилучшая практика» - это, в первую очередь, вопрос мнения :), но есть два подхода, которые (1) имеют очевидный смысл, и (2) могут применяться ко всем файлам конфигурации, а не только к Vim: сворачивание по логическим разделам и подразделы (или даже более глубокие, если вы чувствуете себя смелыми), и разделение вашей конфигурации на несколько небольших файлов и
:source
-ing их.Лично я предпочитаю сворачивание, потому что оно облегчает доступ к вещам, и в то же время дает некоторую иерархию, из которой можно выбирать. Сворачивание функций и
autocmd
s на самых внутренних уровнях также является хорошей идеей, поскольку они создают «естественные» логические единицы.marker
сворачивание имеет смысл для всего этого, потому что логические иерархии не обязательно отражаются в уровнях отступа или в подсветке синтаксиса. Я также увеличиваюfoldcolumn
, что дает мне визуальный намек на то, где я нахожусь:С другой стороны, эта
foldtext
функция (модификация аналогичной функции Дрю Нейла, IIRC) имеет для меня больше смысла, чем стандартная:При другом подходе, разделении файлов, основными проблемами являются поиск вещей и переключение с одного файла на другой. Очень хороший способ решить оба вопроса - использовать плагин, такой как CtrlSF , CtrlP или аналогичный. Но вы, вероятно, уже используете один из них в любом случае.
источник
marker
. Действительно, настройкаfoldcolumn
- это хорошая вещь, я посмотрю, какое значение лучше всего подходит для моих нужд. Также я разделяю ваше мнение о разделенных файлах, но я не знал,CtrlSF
что посмотрю на него, даже если я очень доволенCtrlP
.fdm
вfoldtext
и ,MyFoldText()
но кажется, что это не правильный путь , чтобы использовать его.CtrlSF
лучше всего работает с ag или ack , которые по сути являются специализированными версиямиgrep
.foldtext
это не пользовательский метод свёртывания, а функция, изменяющая внешний вид сложенного текста. Последняя строка в моей фрагмент кода показывает , как она используется:set foldtext=MyFoldText()
.Основные лучшие практики:
Разделите на разделы:
Комментируйте каждый раздел / перепривязывайте
(сделайте резервную копию вашего
.vimrc
или_vimrc
на Github)Просто мои личные предпочтения. Может быть, не так много помощи, хотя.
источник
Вдохновленный @ PeterRincker в ответ , я обработал следующее использовать заголовки в стиле ATX. Добавьте его в конец вашего
.vimrc
источник
Если у вас есть большие функции, такие как я, вы можете использовать это, чтобы сложить свои функции:
И добавьте эту моделину в ваш vimrc:
источник
Расширяя идею @Peter Rincker и @ go2null. Если вы не хотите устанавливать параметры фальцовки в Vim modeline. Вы можете использовать следующий autocmd для установки метода фальцовки и выражения фальцовки.
Я сделал небольшие изменения, чтобы сделать исходный ответ, чтобы он работал как обычная команда vim (не нужно экранировать двоеточие, но нужно избегать двойных кавычек).
Если вам не нравится длинная
foldexpr
строка, мы можем определить функцию для этого:Затем замените строку autocmd
foldexpr
наисточник