Способ работы опций tabstop
, shiftwidth
и softtabstop
заключается в том, что они управляют отступом в определенных точках, которые обычно называют «остановками табуляции». Другими словами, они предназначены для того, чтобы всегда делать отступ для столбца, кратного значению параметра.
Так что, если позиции табуляции имеют значения, кратные 4, нажатие клавиши Tab приведет к отступу курсора. столбец, следующий за кратным 4. Это поведение вставки буквенной вкладки (U + 0009, CHARACTER TABULATION) в документ и последующего рендеринга на обычном терминале (за исключением того, что ширина обычно там 8). Это приводит к тому, что текст выравнивается по фиксированным столбцам, что является желаемым стилем для большинства языков программирования и форматов текстовой разметки.
Как вы заметили, это приводит к разным отступам, если слова различаются длины. Обычно в коде мы просто заставляем второй столбец находиться на следующей позиции табуляции и не заботимся о том, чтобы отступы были разной длины. То есть в вашем примере мы нажимаем клавишу Tab один раз в первой строке и дважды во второй и начинаем следующий столбец со столбца 8.
Я не знаю ни одного способа заставить Vim вставьте указанное c количество пробелов, отличное от стандартных команд редактирования. Обычно пользователи, попавшие в эту ситуацию, просто нажимают пробел четыре раза, если им действительно нужны четыре пробела, а не отступ до следующей позиции табуляции. Конечно, вы можете создать отображение, если вам нужно это много делать.