Как исправить проблему с настройкой табуляции в ~ /. vimrc - PullRequest
0 голосов
/ 25 января 2020

Я устанавливаю конфигурацию вкладки в ~ / .vimr c, как показано ниже:

set ts = 4 sts = 4 sw = 4

Я замечаю, что если слово имеет длину 4 символа или выше, курсор смещается в 4 пробела вправо, как в конфигурации для tabstop.

Но если длина слова меньше 4 символов, он не сдвигается в 4 пробела.

Пример:

'name' + <Tab>: tab produced correct number of spaces (i.e 4 spaces)

'age'  + <Tab>: tab produced wrong number of spaces (i.e 1 space only) 

Почему это так?

Влияет ли вкладка длины слова на эффект?

Что можно сделать, если я хочу переместить курсор на 4 пробела в соответствии с настройками независимо от длина слова?

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Способ работы опций tabstop, shiftwidth и softtabstop заключается в том, что они управляют отступом в определенных точках, которые обычно называют «остановками табуляции». Другими словами, они предназначены для того, чтобы всегда делать отступ для столбца, кратного значению параметра.

Так что, если позиции табуляции имеют значения, кратные 4, нажатие клавиши Tab приведет к отступу курсора. столбец, следующий за кратным 4. Это поведение вставки буквенной вкладки (U + 0009, CHARACTER TABULATION) в документ и последующего рендеринга на обычном терминале (за исключением того, что ширина обычно там 8). Это приводит к тому, что текст выравнивается по фиксированным столбцам, что является желаемым стилем для большинства языков программирования и форматов текстовой разметки.

Как вы заметили, это приводит к разным отступам, если слова различаются длины. Обычно в коде мы просто заставляем второй столбец находиться на следующей позиции табуляции и не заботимся о том, чтобы отступы были разной длины. То есть в вашем примере мы нажимаем клавишу Tab один раз в первой строке и дважды во второй и начинаем следующий столбец со столбца 8.

Я не знаю ни одного способа заставить Vim вставьте указанное c количество пробелов, отличное от стандартных команд редактирования. Обычно пользователи, попавшие в эту ситуацию, просто нажимают пробел четыре раза, если им действительно нужны четыре пробела, а не отступ до следующей позиции табуляции. Конечно, вы можете создать отображение, если вам нужно это много делать.

0 голосов
/ 25 января 2020

Вы, вероятно, вставляете обычные вкладки, которые отображают переменную ширину в соответствии с тем, что было до и после. Я считаю, что set list на самом деле очень удобно для этого (хотя вам, вероятно, не понравятся настройки по умолчанию listchars).

Если вы действительно хотите пробелы (которые я нахожу лучше в любом случае, set expandtab).

Кроме того, большинство постоянных пользователей рекомендуют оставлять tabstop на 8, поскольку вы не можете контролировать ширину вкладок каждой из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...