Подтвердить что ты не робот

Почему Vim добавляет пробелы при соединении строк?

Я хочу развернуть текст в Vim. Когда я присоединяюсь к строкам, я получаю дополнительное пространство между предложениями.

Почему это?

4b9b3361

Ответ 1

Форматирование уничтожает информацию. Существует много разных блоков текста, которые приведут к тому, что один раз отформатирован. Поэтому нет возможности изменить операцию без предварительного знания (т.е. Отменить).

Unformatted:

Unformatted text could start out as either all one line, or several, yet look the same when formatted.

Unformatted text could start out as either all one line, or several, 
yet look the same when formatted.

отформатированный:

Unformatted text could start out as 
either all one line, or several, 
yet look the same when formatted.

Если вы хотите, чтобы ваш абзац был всего на одной строке, или если вы в порядке с небольшим ручным вокалом, вы можете использовать J для объединения строк назад. Вы можете использовать визуальный режим для применения команды J к нескольким строкам одновременно, возможно, в сочетании с ap или ip, чтобы выбрать абзац, например. vipJ. Опять же, вы все равно потеряете некоторую информацию - несколько пробелов при разрыве строк до того, как форматирование закончится свернутым до одиночных пробелов. (Вы можете присоединиться без изменения пробелов, используя gJ вместо J, но вы уже потеряли их при форматировании)

Если вас беспокоят лишние пробелы после предложений (строки, заканчивающиеся на!,? или.), отключите объединенные пространства: set nojoinspaces

Ответ 2

У меня такое чувство, что вы действительно этого хотите: gJ

От :h gJ:

gJ          Join [count] lines, with a minimum of two lines.
            Don't insert or remove any spaces.  {not in Vi}

Это удобно, если вы скопировали что-то из терминала и вставляли его как большой прямоугольный блок в vim, а не в одну строку.

Я обычно использую его в визуальном режиме. Материал для хилама, gJ.

Ответ 3

Это - это ответ, который в конечном итоге работал у меня, ни один из вышеперечисленных действий не использовался в моем случае использования.

По существу, используйте gJ, например, несколько других, но выделите весь файл, поэтому в командном режиме введите:

ggVGgJ

Ответ 4

Я думаю, что простым решением для объединения строк без пробелов является:

:j!

С ! соединение не вставляет и не удаляет пробелы. Для всего файла используйте :%j!.

Смотрите: :help :join.

Ответ 5

Я все еще получил дополнительное пространство после присоединения, если линия, над которой мы работаем, не заканчивается пробелом. Обычно это желаемое поведение. Пример

first line without space
second line

после соединения с J, станьте

first line without space second line

Хотя в некоторых случаях мы не хотим его применять,

myInstance->methodA()
          ->methodB()

И мы хотим, чтобы соединение стало myInstance->methodA()->methodB() без какого-либо промежутка между ними!

Здесь отображение хелперов я использует

nmap <leader>jj Jx

< лидер > ключ может быть проверен с помощью :let mapleader, по умолчанию ключ \, я считаю.

поэтому в нормальном режиме просто \jj, чтобы выполнить соединение без лишнего пространства!