Я произошел через эту страницу, полную супер полезных и довольно загадочных подсказок по энергии по http://rayninfo.co.uk/vimtips.html. Я попробовал несколько из них, и я понимаю то, что происходит достаточно, чтобы смочь проанализировать его правильно в моей голове так, чтобы я мог возможно воссоздать его позже. Один мне нелегко получать мою голову, перенесенную, хотя следующие две команды для удаления всех пробелов из конца каждой строки
:%s= *$== : delete end of line blanks
:%s= \+$== : Same thing
Я интерпретирую %s
как представляют замену в виде строки на каждой строке в файле, но после этого я заблудился в том, что похоже на некоторое непростое изменение :s и regex. Я привык видеть и использовать :s/regex/replacement. Но вышеупомянутое супер сбивает с толку.
Что делает тех, которые выше команд, средних на английском языке, шаг за шагом?
Разделители регулярных выражений не обязательно должны быть косой чертой, они также могут быть другими символами. Это удобно, если строки поиска или замены содержат косую черту. В данном случае я не знаю, почему они используют знаки равенства вместо косой черты, но вы можете притвориться, что они являются косыми чертами:
:%s/ *$//
:%s/ \+$//
Есть ли в этом смысл? Первый ищет пробел, за которым следует ноль или несколько пробелов, а второй ищет одно или несколько пробелов. Каждый из них привязан к концу строки с помощью $
. И тогда строка замены пуста, поэтому пробелы удаляются.
На самом деле я понимаю ваше замешательство. Если вы посмотрите на : help: s
, вам нужно прокрутить несколько страниц вниз, прежде чем вы найдете эту заметку:
* E146 *
Вместо
'/'
, которые окружает шаблон и заменяющую строку, вы можно использовать любой другой символ, но не буквенно-цифровой,'\'
,'"'
или'|'
. Это полезно, если вы хотите включить'/'
в шаблон поиска или строка замены. Пример:: s + / + // +
Я не знаю синтаксис vim
, но мне кажется, что это операторы подстановки в стиле sed
. В sed
операторы /
(в s/REGEX/REPLACEMENT/
) могут быть единообразно заменены на любой другой символ. В данном случае это =
. Таким образом, если вы мысленно замените =
на /
, то получите
:%s/ *$//
:%s/ \+$//
что должно иметь для вас больше смысла.