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

Эффективный способ удаления нескольких пробелов между двумя словами в Vim

Скажем, у меня был следующий текст

 word1 word2              word3 word4

и курсор находился где-то между word2 и word3.

Вопрос

  • Какой самый быстрый способ заменить несколько пробелов между word2 и word3 одним пространством в Vim?

Начальные мысли

  • :s/ */ /g

Однако я думал, что может быть что-то более быстрое, чем diw, но для пробелов.

Было бы хорошо, если бы стратегия также работала, когда курсор находился на w из word3 или 2 или word2.

4b9b3361

Ответ 1

ciw, а затем вернитесь в нормальный режим, хотя он будет работать, только если вы находитесь в пространстве.

Ответ 2

Это работает для меня:

:s/\s\+/ /g

Ответ 3

Попробуйте заменить все двойные пробелы (повторяющиеся ноль или более) одним пространством.

:s/  \+/ /g

Ответ 4

Я использую (привязан к горячей клавише)

i<enter><esc>kJ

i - режим вставки

k - вверх по строке

J - объединить строки вместе

Это работает независимо от того, где курсор находится в пробеле или на w из word3, и помещает курсор в начало слова, которое только что присоединилось. Если вы хотите, чтобы он работал с 2 на word2, просто замените первый i на a.

Ответ 5

Я сделал бы это в два шага

  • $//курсор переходит в космос в конце строки
  • dw//удаляет пробелы (используйте для повторения при необходимости)