vim

Подписаться на эту метку по RSS

Одной свербящей особенностью при знакомстве с текстовым редактором Vim являлось то, что символ табуляции, такой, к которому мы привыкли из «нормальных» редакторов, к примеру Notepad++ или консольного nano, ведёт себя совсем не должным образом. Если <TAB> поставлен в начале строки, то почему-то нельзя нажать клавишу «влево» и достигнуть начала окна редактирования. А внутри текста он ведёт себя просто вызывающе: курсор стоит не перед <TAB>ом, как положено, а не доходя одного символа до конца <TAB>а! Глумление над нами, чистой воды.

На самом деле такое поведение вполне естественно с точки зрения Vim. Символ табуляции — это один символ, поэтому в normal mode Vim помещает кусор на положенное место — над символом (или перед ним, в зависимости от настроек терминала) — чтобы его можно было удалить, заменить и просто осознать, что <TAB> — это один символ, такой же как остальные а не резиновая четырёхсимвольная махина. А то, что визуально символ табуляции занимает 2, 4, 8, или сколько сами определим, символов — это тоже так надо, иначе бы он ничем не отличался от пробела, по крайней мере для нас, зрителей.

Допустим не нравится нам такое поведение Vim. Есть два разумных способа это исправить. Первый я нашёл везде и это не совсем то, что нужно. Вам будет позволено перемещать курсор по всей плоскости экрана посимвольно (а также появятся дополнительные бонусы, связанные с выделением вертикальных блоков текста), но перепрыгивать через <TAB> разом не получится:

set virtualedit=all

Второй, который действительно похож на правду, я нашёл в архиве девелоперской переписки:

set list listchars=tab:\ \ 

Обратите внимание на пробел после второго «\». При использовании второго способа вы теряете бонусы, которые даёт опция «set invlist», если, конечно, вы ей пользуетесь.

Эти опции можно прописать, как и все остальные, в ~/.vimrc.