Вы можете получить значение параметра в Vimscript, добавив &
. Таким образом, размер вкладки составляет &tabstop
или &ts
. Также есть &softtabstop
(&sts
), выберите тот, который вам действительно нужен.
В то время как вам нужно было умножить количество пробелов на размер табуляции, вам нужно разделить количество табуляций. Тогда есть остаток, чтобы заботиться. Итак, сначала установите tabstop
:
:set ts=4
Затем вы можете конвертировать из табуляции в пробелы и из пробелов во вкладки следующим образом:
:%s/^\v(\t)*/\=repeat(repeat(' ',&ts),strlen(submatch(0)))/g
:%s#^\v( )*#\=repeat("\t",strlen(submatch(0))/&ts).repeat(' ',strlen(submatch(0))%&ts)#g
(изменил разделитель с /
на #
, потому что мне нужно было /
для деления: P)
Однако ... похоже, вы изобретаете колесо здесь. :help :retab!
и :help 'expandtab'
. Сначала установите tabstop
, как указано выше, затем:
:set et | ret!
:set noet | ret!
Первый из них будет заменять табуляцию пробелами; второй, пробелы во вкладках, в соответствии с tabstop
.