Відповіді:
Уніфікована відповідь:
Я б спробував використати 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, без закриття дужок.
Для повноти є також плагін Indents Guides , який показує рівні відступи шляхом чергування кольорів пробілів. Тут потрібна версія 7.2 або пізніша. Оскільки він використовує tabstop
і shiftwidth
змінні, ймовірно, буде працювати для ваших параметрів відступу відразу.
Після того, як плагін встановлений, ви можете просто використовувати :IndentGuidesEnable
або :IndentGuidesDisable
. Якщо ви використовуєте термінальний vim, врахуйте, що відповідно до посібника,
Наразі у Терміналу 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 найкращим для цього. Вам потрібен шрифт з відповідними символами, але я вважаю, що консолі в Windows та Menlo на Mac OS X добре працюють. Як зазначається в уніфікованій відповіді вище, це працює за допомогою (ab), використовуючи conceal
функцію vim, щоб поставити вертикальні смуги (від використовуваного шрифту) в потрібне місце. Я дуже задоволений цим рішенням, але недоліком його є те, що мої вертикальні смуги є частиною гліфів, що малюють коробку, і вони розташовані по центру, а не вирівняні вліво, як у інших редакторах. Я звик до цього, але це можна виправити, вручну виправляючи ваш шрифт або використовуючи шрифт, як Fantasque Sans Mono (зверніть увагу на те, як на знімках екрана у пов'язаному рефінансі github використовується indentLine).
Плагін indentLine, як правило, досить повільний для не малих файлів, який можна помітити при натисканні клавіші Enter, оскільки він відстає на секунду або близько того.
Я виявив, що vim-indentguides є більш швидким і візуально схожим плагіном, який також візуально відрізняє відступи вкладки від пробілів.