Ответы:
Единый ответ:
Я бы попробовал использовать 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
:
set cursorcolumn
set cursorline
Это имеет компромисс, что вы должны переместить курсор на столбец, который вы хотите видеть, но вы получите меньше визуального беспорядка. Обычно, когда меня интересуют уровни отступов, я все равно сохраняю свое место курсором. Мой путь также не так неловко выглядит в таких языках, как python без закрывающих скобок.
Для полноты картины есть также плагин Indent Guides , который показывает уровни отступов, чередуя цвета пробелов. Требуется версия 7.2 или выше. Так как она использует tabstop
и shiftwidth
переменные, это вероятно , будет работать для настройки отступа сразу.
После того, как плагин установлен, вы можете просто использовать :IndentGuidesEnable
или :IndentGuidesDisable
. Если вы используете терминал vim, обратите внимание, что, согласно инструкции,
На данный момент Terminal Vim имеет только базовую поддержку. Это означает, что цвета не будут автоматически рассчитываться на основе вашей схемы цветов. Вместо этого используются некоторые предустановленные цвета в зависимости от того, задан ли фон темным или светлым.
Чтобы изменить цвета направляющих для скриншота, я использовал следующее
let g:indent_guides_auto_colors=0
поэтому при замене буферов цвета не пересчитываются, а затем устанавливают цвета с помощью
hi IndentGuidesEven ctermbg=238
hi IndentGuidesOdd ctermbg=236
Как и в случае с другими представленными решениями, он показывает только направляющие для отступов в строках, где есть пробелы.
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 - более быстрый и визуально похожий плагин, который также визуально отличает отступы табуляции от отступов пространства.