6

В нижней правой части редактора vim есть 2 числа, которые отображают номер строки и столбца в следующем формате:

495,30 

Но в определенных строках этот формат используется:

496,9-30

Что означает вышеуказанный формат с - ? Курсор все еще находится в столбце 30 но что это за 9 ?

3 ответа3

7

Это относится к позиции курсора по отношению к специальным символам (то есть: вкладка).

Скажем, ваш экран был таким (маленький экран, я знаю):

1 x x x x x x x x x x - - - - - - - - - - - - - - - 
2 - - - - - - - - - - - - - - - - - - - - - - - - -
3 - - - - - - - - - - - - - - - - - - - - - - - - - 
4 - - - - - - - - - - - - - - - - - - - - - - - - -
5 - - x            ---           ---          --- x
6 - - - - - - - - - - - - - - - - - - - - - - - - -
7 - - - - - - - - - - - - - - - - - - - - - - - - -
8 x x x x x x x x x x x x x x x x x x x x x x x x x

Любой отдельный символ (кроме юникода) = 1 байт
3 прикрепленных строки (---) = Tab = 1 байт
1 пробел (-) = 1 байт

Вкладка настроена для отображения более 8 столбцов.

Если ваш курсор был на последнем X в строке 1, Vim покажет 1,10. Если бы он был на первом X в строке 5, он показал бы 5,3. Последний X в строке 8 представляет 8,25. Однако, поскольку второй X в строке 5 разделен 3 последовательностями табуляции, если бы курсор был на последнем X, он бы показал 5,7-25.

  • Первые 5, очевидно, номер строки
  • 7 представляет номер байта в столбце (2 пробела, x, 3 табуляции и последний x = 7)
  • 25 представляет столбец, как вы видите его в консоли. Использование 25 пробелов будет в той же позиции, что и 2 пробела, x, 3 табуляции и еще один x. Как видите, 25-й X в строке 8 совпадает с последним X в строке 5.
5

Со страницы справки Vim "options.txt" (выделено мое):

Если количество отображаемых символов отличается от количества байтов в тексте (например, для табуляции или многобайтового символа), отображаются как текстовый столбец (номер байта), так и экранный столбец, разделенные чертой.

Для пустой строки отображается «0-1».

Для пустого буфера номер строки также будет равен нулю: «0,0-1».

Например, если первым символом строки была вкладка, а Vim был настроен для отображения вкладок более 8 столбцов, ваша линейка сказала бы 1-8, потому что вкладка по-прежнему всего один байт, а курсор был бы на 8-м столбце. ,

Подобные ситуации могут возникнуть при просмотре файлов, содержащих расширенные символы Юникода, поскольку для их хранения требуется более одного байта, но при этом используется только один столбец на экране.

3

В приведенных выше примерах номер байта меньше столбца экрана (например, 9-30, 7-25). Это происходит, когда отображаемый однобайтовый символ занимает более одного столбца экрана.

Также возможно, чтобы номер байта был больше, чем столбец экрана. Это происходит, когда в одном (или меньшем) столбце (ах) отображается более одного байта. Примером являются многобайтовые символы, такие как '\xa0' (в шестнадцатеричной записи), которые могут отображаться на экране в одном столбце.

Например, в строке 5, если второй символ имеет два байта, а четвертый - также два байта, при перемещении по строке 5 номера столбцов изменяются следующим образом:

5,1
5,2   (two-byte character, appears in a single column)
5,4-3
5,5-4 (two-byte character, appears in a single column)
5,7-5

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .