Отображение текущего состояния `expandtab` в строке состояния в macvim

В настоящее время я использую vim-airline в своем macvim и хочу отображать статус expandtab независимо от того, установлен он или нет в строке состояния.

Я могу узнать статус expandtab, выполнив следующую команду :set expandtab?. Из документации vim-airline я обнаружил, что могу использовать что-то вроде этого

let g:airline_section_b = '%{getcwd()}'

Я изменил его на

let g:airline_section_b = '%{expandtab?}'

но я получаю ошибку undefined variable: expandtab.

Может ли кто-нибудь сказать, как я могу получить статус expandtab, а затем показать его в строке состояния. Спасибо.


person Sudar    schedule 07.12.2014    source источник


Ответы (2)


:set не обращается к переменным, поэтому вы не можете использовать вопросительный знак для запроса переменных.

Вы пытаетесь получить доступ к несуществующей переменной expandtab. На самом деле вы хотите получить доступ к настройке параметра, и доступ к ним осуществляется с использованием префикса &.

Итак, вы должны добавить:

let g:airline_section_b = '%{&expandtab}'

Обратите внимание, вопросительный знак не обязателен и не имеет особого значения для VimL.

Подробнее см. :h expr-option.

Обновить. Будет отображаться только 1 (расширенная вкладка установлена) или 0 (расширенная вкладка не установлена). Однако должно работать что-то вроде этого:

let g:airline_section_b = '%{&expandtab?"et":"noet"}'

Который будет отображать «et», когда расширение вкладки установлено, или «noet», когда расширение вкладки не установлено. При этом используется выражение <cond>?<true>:<false> для отображения определенной строки в зависимости от значения условия ‹cond>. Это объясняется в справке ниже :h expr1

person Christian Brabandt    schedule 07.12.2014
comment
Это работает. Но единственная проблема в том, что он отображает 0 или 1 вместо текста expandtab или noexpandtab - person Sudar; 07.12.2014
comment
Спасибо, это работает. Кстати, вы имели в виду, что обновите ответ? - person Sudar; 08.12.2014

К параметрам Vim можно получить доступ к живым переменным, если они имеют префикс &. Пример:

let g:airline_section_b = '%{&expandtab}'

Подробнее см. :h :let-&

person Peter Rincker    schedule 07.12.2014