#javascript #regex #vim
#javascript #регулярное выражение #vim
Вопрос:
Если существует инструмент для автоматического улучшения моего js-кода, я бы предпочел использовать этот пакет.
Я хочу расширить все так, чтобы подобное утверждение:
var n=x (y (z/k))-123;
превращается в:
var n = x (y (z / k)) - 123;
Однако на данный момент я хочу преобразовать все мои сжатые =
операторы , ==
, и ===
, в дополненные версии самих себя.
Я пытался использовать что-то вроде :%s/[^ ]==[^ ]/ == /g
, но проблема в том, что он обрезает предшествующий и продолжающий символ.
Ответ №1:
В Vim вы могли бы использовать что-то вроде:
:%s!s*([!<>=/* -] )s*! 1 !g
Объяснение:
s
— заменить!
— шаблон запускаs*
— ноль или более пробелов(
— начать группу[!<>=/* -]
— один или несколько из!<>=/* -
)
— конец группыs*
ноль или более пробелов!
конец шаблона, начало замены<space>1<space>
— сопоставленная группа дополняется пробелом!
— Конец заменыg
— глобально в строке
Но если вы хотите улучшить код и придерживаться определенного стандарта кодирования, вам лучше использовать такой инструмент, как художественный стиль.
Комментарии:
1. Похоже, что это может работать лучше, чем то, что у меня есть, 1 вам, сэр!
2. Также спасибо за ссылку, я ее проверю. В настоящее время я пробую jsbeautify.
3. @chown: я обновил свой ответ, чтобы включить !=, >=, <= и т. Д., Спасибо вам 🙂
Ответ №2:
Для этого потребуется несколько команд, но вы могли бы попробовать что-то вроде:
:%s/([^s])([ /()-=])/1 2/g
:%s/([ /()-=])([^s])/1 2/g
:%s/([^s])==/1 ==/g
:%s/==([^s])/== 1/g
Then do those last 2 for each: !=, >=, <=, etc..