Почему Vim добавляет пробелы при соединении строк?
Я хочу развернуть текст в Vim. Когда я соединяю строки, я получаю дополнительный пробел между предложениями.
Это почему?
5 ответов
Форматирование уничтожает информацию. Есть много разных блоков текста, которые в результате будут отформатированы. Поэтому нет способа отменить операцию без предварительного знания (то есть отменить).
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
У меня такое чувство, что ты действительно этого хочешь: gJ
От :h gJ
:
gJ Join [count] lines, with a minimum of two lines.
Don't insert or remove any spaces. {not in Vi}
Это удобно, если вы скопировали что-то из терминала и вставили это в виде большого прямоугольного блока в vim, а не в одну строку.
Я обычно использую это в визуальном режиме. Подсветка, гДж.
Я предполагаю, что простое решение соединить строки без пробелов:
:j!
С !
объединение не вставляет и не удаляет пробелы. Для всего файла используйте :%j!
,
Увидеть: :help :join
,
Это ответ, который в итоге сработал для меня, ничего из вышеперечисленного не сработало в моем случае использования.
По сути, используйте gJ, как говорили несколько других, но выделите все файлы, поэтому в командном режиме введите ggVGgJ.
Я все еще получаю лишний пробел после соединения, если строка, над которой мы работаем, не заканчивается пробелом. Обычно это желаемое поведение. пример
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
выполнить объединение без лишних пробелов!