Как считать эту команду для удаления всех пробелов в конце строки

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

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

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

Что делает тех, которые выше команд, средних на английском языке, шаг за шагом?

6
задан Andrew Brēza 27 November 2017 в 03:35
поделиться

2 ответа

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

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

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

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

* E146 *

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

: s + / + // +
12
ответ дан 8 December 2019 в 15:59
поделиться

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

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

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

3
ответ дан 8 December 2019 в 15:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: