VIM: очистка событий onclick

Я занимаюсь рефракторингом, и одна из целей - переместить некоторые встроенные js-функции в HTML.

<a href="#" onClick="function('');">text</a>

Идея состоит в том, чтобы удалить событие onClick вместе с содержимым внутри кавычек.

<a href="#">text</a>

предложения двигаться быстрее?

Я представляю, сделав это один раз, я могу просто повторить движение с помощью. после нахождения следующего экземпляра.


person Helmut Granda    schedule 05.03.2014    source источник
comment
Если вы используете несколько команд для удаления всего атрибута, вы можете использовать q для их записи и последующего воспроизведения. См. :help record.   -  person Felix Kling    schedule 05.03.2014


Ответы (2)


Это должно делать простое регулярное выражение:

%s /onClick=".\{-}"//g
person tuxcanfly    schedule 05.03.2014
comment
Думаю, это не сработает для <a onClick="function('');" href="#">. - person Felix Kling; 05.03.2014
comment
правда, но не знаю почему? Не должно. * Соответствовать только строке внутри кавычек? - person tuxcanfly; 05.03.2014
comment
неважно, я понимаю почему. Это из-за конечной цитаты последнего атрибута .. ой - person tuxcanfly; 05.03.2014
comment
Лучшим решением, чем ставить точку с запятой в конце, было бы либо использовать \{-}, а не * после ., либо изменить . на [^"]. - person icktoofay; 05.03.2014
comment
Трудно было выбрать, но после опробования обоих решений это был лучший вариант, учитывая добавление к команде% s /onClick=.\{-}//gc (обратите внимание на c) в конце, чтобы включить интерактивность для проверки всех элементы, которые подлежали замене. - person Helmut Granda; 05.03.2014
comment
@HelmutGranda - +1 Выберите решение, которое лучше всего подходит для вас. Учитывая мое собственное предупреждение, интерактивное изменение и возможность проверки - это лучшее решение. - person Lieven Keersmaekers; 05.03.2014

Другой возможный метод

%norm / onClick<C-v><ESC>ndt>

Авария

%norm       # following are normal mode commands
/ onClick   # Search for _onClick
<C-v><ESC>  # Exit search mode
n           # goto next match
dt>         # delete till >

Обратите внимание, что этого может быть достаточно для одноразовой работы. Если вам нужно надежное решение, это или регулярное выражение или еще что-то не подходит для работы.

person Lieven Keersmaekers    schedule 05.03.2014
comment
Это сработало! Единственная замена, которую мне пришлось сделать, это ‹C-q› вместо ‹C-v›. см .: stackoverflow.com/questions / 426896 / - person Helmut Granda; 05.03.2014