Единый ответ:
Если вы используете вкладки
Я бы попробовал использовать listchars:
:set listchars=tab:\|\
:set list
примечание: после последнего есть пробел \
.
Этот метод хорош, потому что он использует встроенную поддержку Vim для показа такого рода вещей.
Пример вывода:
| if (1) {
| | func();
| }
Тем не менее, это не работает для ведущих мест. Как отметил @Josh Petrie, есть патч для пробелов , но тогда вам придется перекомпилировать Vim, что выходит за рамки этого ответа.
Если вы используете пробелы, и не против использования плагина
Вайбхав Сагар отмечает, что плагин indentLine выполняет эту функцию.
Установите обычным способом (см. Установка плагинов ), и он, кажется, волшебным образом работает без дальнейшего ввода. Если вы не против столбцов ASCII, вам не нужно ничего делать со своими шрифтами. Пример вывода вашего примера после установки параметров отступа и запуска:IndentLinesReset
45 ¦ var move = function(direction) {
46 ¦ ¦ if(!initialized) { initialize(); }
47
48 ¦ ¦ if(shiftBoard(direction)) {
49 ¦ ¦ ¦ setTimeout(addRandomPiece, 100);
50 ¦ ¦ }
51 ¦ };
Плагин требует Vim 7.3 или более поздней версии, и делает умным использование функции Conceal этой версии. Вместо того, чтобы фактически скрывать текст, он заменяет текст панелями в представлении, но не фактическим буфером. В результате вы видите столбцы, но они не сохраняются в файл (так как они на самом деле пробелы)
Предостережение
Оба эти метода предполагают «правильно» код с отступом. Они не размещают линии отступа на уровне отступа при открытии «блока» (что, похоже, делает возвышенное), а вместо этого размещают линии через равные промежутки времени в зависимости от настроек отступа. Кроме того, он показывает только столбцы в строках, где есть место (поэтому в строке вывода vim под первым if
нет столбцов, что создает визуальный разрыв)
Другой вариант, который я использую, который не совсем соответствует тому, о чем вы просили, но выполняет ту же задачу, чтобы упростить просмотр того, что находится в том же столбце, - это установить в вашем файле следующее
vimrc
:Это имеет компромисс, что вы должны переместить курсор на столбец, который вы хотите видеть, но вы получите меньше визуального беспорядка. Обычно, когда меня интересуют уровни отступов, я все равно сохраняю свое место курсором. Мой путь также не так неловко выглядит в таких языках, как python без закрывающих скобок.
источник
Для полноты картины есть также плагин Indent Guides , который показывает уровни отступов, чередуя цвета пробелов. Требуется версия 7.2 или выше. Так как она использует
tabstop
иshiftwidth
переменные, это вероятно , будет работать для настройки отступа сразу.После того, как плагин установлен, вы можете просто использовать
:IndentGuidesEnable
или:IndentGuidesDisable
. Если вы используете терминал vim, обратите внимание, что, согласно инструкции,Чтобы изменить цвета направляющих для скриншота, я использовал следующее
поэтому при замене буферов цвета не пересчитываются, а затем устанавливают цвета с помощью
Как и в случае с другими представленными решениями, он показывает только направляющие для отступов в строках, где есть пробелы.
источник
let g:indent_guides_enable_on_vim_startup=1
в мой .vimrc, чтобы включить это при запуске.Я нашел плагин IndentLine, чтобы быть лучшим для этого. Вам нужен шрифт с соответствующими символами, но я считаю, что Consolas на Windows и Menlo на Mac OS X работают хорошо. Как указано в унифицированном ответе выше, он работает (ab), используя
conceal
функцию vim для размещения вертикальных полос (из используемого шрифта) в нужном месте. Я очень доволен этим решением, но его недостатком является то, что мои вертикальные полосы являются частью глифов для рисования прямоугольников и выровнены по центру, а не по левому краю, как в других редакторах. Я привык к этому, но это можно исправить, вручную исправляя свой шрифт или используя такой шрифт, как Fantasque Sans Mono (обратите внимание, как на скриншотах в связанном репозитории github используется indentLine).источник
Плагин indentLine имеет тенденцию быть довольно медленным на немалых файлах, наблюдаемых при нажатии Enter, поскольку он отстает на секунду или около того.
Я обнаружил, что vim-indentguides - более быстрый и визуально похожий плагин, который также визуально отличает отступы табуляции от отступов пространства.
источник