Эффективный способ удалить несколько пробелов между двумя словами в Vim - PullRequest
25 голосов
/ 01 марта 2011

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

 word1 word2              word3 word4

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

Вопрос

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

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

  • :s/ */ /g

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

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

Ответы [ 6 ]

29 голосов
/ 01 марта 2011

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

:s/\s\+/ /g

18 голосов
/ 01 марта 2011

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

11 голосов
/ 01 марта 2011

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

:s/  \+/ /g
1 голос
/ 20 октября 2014

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

i<enter><esc>kJ

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

k - до линии

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

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

0 голосов
/ 21 марта 2018
%s/\(\w\)\s\+\(\w\)/\1 \2/g
%  - global
s - search
\( - escape (
\w - (any letter, digit)
\) - escape )
\(\w\) - remember letter/digit before space as \1
\s - whitespace
\+ - escape +
\s\+ - 1 or more whitespace space
\(\w\) - remember letter/digit after space(s) as \2
/ - replcae with
\1 - remembered last letter/digit before space
' ' - space character here - single space
\2 - remembered first letter/digit after white space(s).
/ - end of replace
g - globally
0 голосов
/ 12 февраля 2017

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

  1. $ // курсор уходит в пробел в конце строки
  2. dw // удаляет пробелы (используйте. Для повторения при необходимости)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...