vim: Как убрать пробелы в середине строк - PullRequest
0 голосов
/ 10 октября 2018

Вот проблема: в проекте, над которым я работаю, вкладки вообще запрещены, и нам только говорят использовать пробелы.Однако иногда я заканчиваю редактированием устаревшего исходного файла, который содержит вкладки для отступа и выравнивания кода.

Пример кода с использованием вкладок (с символами табуляции, показанными как «| >>>»):

|>>>int a =||>>>|>>>0;
|>>>int foobar =|>>>10;
|>>>int toto =|>|>>>4;

Это пример, но вы должны учитывать, что весь файл заполнен им настолько, что его нельзя исправить вручную.

Я обычно делаю простой поиск-замену, напримерэто чтобы заменить табуляцию пробелами:

:%s/\t/    /g

Но код заканчивается так:

    int a =            0;
    int foobar =    10;
    int toto =        4;

со всеми значениями, не выровненными.

То, что я хочу, этокоманда, которая может удалить ненужный пробел, но не отступ, чтобы получить что-то вроде этого:

    int a = 0;
    int foobar = 10;
    int toto = 4;

т.е. каждый набор из 2+ пробелов должен быть уменьшен только до 1 пробела, кроме отступа.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Установить expandtab, чтобы vim использовал пробелы вместо табуляции, а затем использовал функцию :retab!.(см. :h expandtab и :h retab!).

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

0 голосов
/ 10 октября 2018

Команда, отвечающая на вопрос:непустой приоритет и замените следующий набор пробелов только одним пробелом.

Однако это оставит один пробел в строках с несколькими пробелами.Чтобы исправить это, используйте команду:

:%s/ *$//
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...