Когда я работаю с файлами в Python, я иногда ошибочно принимаю табуляции за пробелы и наоборот. Есть ли способ заставить Vim отображать символ для вкладки вместо вкладки?
:h vim-faqи искать /invisible. Трудно запомнить тег :h faq-19.8.
Когда я работаю с файлами в Python, я иногда ошибочно принимаю табуляции за пробелы и наоборот. Есть ли способ заставить Vim отображать символ для вкладки вместо вкладки?
:h vim-faqи искать /invisible. Трудно запомнить тег :h faq-19.8.
Ответы:
Да, используйте listchars:
set list
set listchars=tab:>-
Если вы поместите эти две строки в ваш .vimrc, вкладки будут показаны как >для начальной позиции, так и -для остальной части вкладки.
(Sidenote: listchars также может показывать завершающие пробелы с помощью trail:x(замените xсимвол, который вы хотите использовать для конечного пробела), что также может быть полезно.)
set listchars=tab:!·,trail:·, IMHO ·намного яснее, чем -... Вам нужна довольно свежая версия Vim, чтобы это работало между прочим (не уверен, что именно, я думаю, 7.3.x) ...
▸как он немного меньше, чем >. В настоящее время я вижу конечный пробел, помечая eol (хотя я могу попробовать выше). Мои настройки: set listchars=eol:¬,tab:▸\ и
Основной ответ :set listтаков: вкладки отображаются как ^I.
Тем не менее, я рекомендую пойти дальше. Просто :set listпроблематично в том, что не удается сохранить визуальное выравнивание на экране. Например:
%.o: %.cpp
^Ig++ -c $<
не выглядит хорошо, особенно , когда вы ожидаете gот g++появляться под первым pиз cpp(предполагая tabstop=8).
Поэтому я предлагаю, чтобы .vimrcвы добавили что-то вроде :set listchars=tab:␉· (для ясности, это символ Unicode U + 2409 СИМВОЛ ДЛЯ ГОРИЗОНТАЛЬНОЙ ТАБУЛЯЦИИ, за которым следует U + 00B7 MIDDLE DOT .)
Как объяснено в :help listchars, двухсимвольная настройка для tab:xyсохранения визуального выравнивания:
tab:xy Two characters to be used to show a tab. The first char is used once. The second char is repeated to fill the space that the tab normally occupies. "tab:>-" will show a tab that takes four spaces as ">---". When omitted, a tab is show as ^I.
Пример выше будет отображаться на экране как:
%.o: %.cpp
␉·······g++ -c $<
Лично я стараюсь изо всех сил listchars:
:set listchars=eol:⏎,tab:␉·,trail:␠,nbsp:⎵
eol, я использую U + 23CE RETURN СИМВОЛtrail, я использую U + 2420 СИМВОЛ ДЛЯ КОСМОСАnbsp, я использую U + 23B5 НИЖНИЙ квадратная скобкаЭти символы достаточно различимы, поэтому они редко появляются буквально в тексте документа.
Чтобы ввести эти специальные символы в свой vimrc, введите Ctrl-vu23CEв режиме вставки, как описано в :help utf-8-typing.
set lcs=tab:├─
Для случайного использования можно просто выделить все вкладки в документе с помощью следующей /команды поиска :
/\t
Чтобы убрать выделение, просто наберите слово, :nohкоторое означает «нет :nohlsearchосвещения».
" Highlight tabs as errors.
" https://vi.stackexchange.com/a/9353/3168
match Error /\t/

Для получения дополнительной информации об этих полезных командах выделения, в том числе в сочетании с конечным пробелом и созданием этого постоянного элемента, см. Вики Vim .
:match Error /\t/для выделения вкладок (или любого другого шаблона в этом отношении) независимо от регистра поиска и hlsearch (введите, :matchчтобы очистить его).
Мне лично нравится использование плагина indentLine , который отображает вертикальную линию на уровнях отступов.
Это очень помогает, особенно в python, где важен отступ.
Помимо прочего, он предоставляет команду переключения, которую можно сопоставить с комбинацией клавиш, чтобы вы могли отключить ее, когда она вам не нужна.
Вы можете по-разному показывать вкладки в обычном терминале и gvim.
set list!
if has('gui_running')
set listchars=tab:▶\ ,trail:·,extends:\#,nbsp:.
else
set listchars=tab:>.,trail:.,extends:\#,nbsp:.
endif
(Добавление для полноты, в случае, если другие считают это полезным).
Самый простой способ это сделать :set list, который будет показывать вкладки как ^Iи конец строки как $.
Мне нравится использовать отображение, которое вызывает
:set invlist
для переключения между обычным отображением и отображением списка.
Например:
:nmap <leader>l :set invlist<cr>
Это позволяет мне быстро проверить, есть ли проблемы с вкладками и пространством, а затем вернуться к обычному отображению.
retabкаждом сохранении файла.