Как прочитать эту команду, чтобы удалить все пробелы в конце строки - PullRequest
6 голосов
/ 17 июня 2010

Я попал на эту страницу, полный супер полезных и довольно загадочных советов по vim на http://rayninfo.co.uk/vimtips.html. Я попробовал несколько из них, и я понимаю, что происходит достаточно, чтобы иметь возможность правильно проанализировать его в моей голове, такчто я могу воссоздать его позже.Во-первых, мне трудно обхватить голову, хотя следующие две команды убирают все пробелы в конце каждой строки

:%s=  *$==                  : delete end of line blanks
:%s= \+$==                  : Same thing

Я интерпретирую %s как замену строки на каждомстрока в файле, но после этого я теряюсь в том, что похоже на какое-то грубое изменение: s и регулярное выражение.Я привык видеть и использовать: s / regex / replace.Но вышесказанное очень запутанно.

Что означают эти команды на английском языке, шаг за шагом?

Ответы [ 2 ]

12 голосов
/ 17 июня 2010

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

:%s/  *$//     
:%s/ \+$//     

Имеет ли это смысл?Первый ищет пробел, за которым следуют ноль или более пробелов, а второй ищет один или несколько пробелов.Каждый из них закрепляется в конце строки с помощью $.И тогда замещающая строка становится пустой, поэтому пробелы удаляются.

На самом деле, я понимаю вашу путаницу.Если вы посмотрите на :help :s, вам придется прокрутить несколько страниц вниз, чтобы найти эту заметку:

* E146 *

Вместо '/', который окружает шаблон иВ качестве замещающей строки можно использовать любой другой символ, но не алфавитно-цифровой символ, '\', '"' или '|'.Это полезно, если вы хотите включить '/' в шаблон поиска или строку замены.Пример:

:s+/+//+
3 голосов
/ 17 июня 2010

Я не знаю синтаксис vim, но мне кажется, что это операторы подстановки в стиле sedsed /s/REGEX/REPLACEMENT/) можно равномерно заменить любым другим отдельным символом.Здесь это выглядит как =.Поэтому, если вы мысленно замените = на /, вы получите

:%s/  *$//
:%s/ \+$//

, что должно иметь для вас больше смысла.

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