Vimperator - Custom ExtendedHit для запуска скрипта / программы на соответствующем регулярном выражении

473
superboot

Я хочу определить пользовательский расширенный совет в vimperator, который:

  1. Соответствует шаблону регулярных выражений
  2. Каналы, соответствующие сценарию как таковые: ~ / bin / script regex-match-as-arg

С чего мне начать решение этой проблемы? Есть ли у vimperator функции "vimperator-script", которые облегчают это?

Благодарю.

2

1 ответ на вопрос

3
pyrocrasty

Некоторые намеки (каламбур не предназначен).

Добавление нового расширенного режима подсказок:

  • Вы можете определить режим с помощью hints.addModeфункции.
  • Вы можете установить шаблон для добавления подсказок с помощью ehtопции, которая использует селектор XPath. (В Pentadactyl вы также можете использовать селекторы CSS, но я не уверен насчет Vimperator - их нет на страницах справки)

Вот простой пример, который я использую на Jisho.org, чтобы перейти на информационную страницу для использования кандзи ;k.

js set eht+=[k]:span[class=text] hints.addMode('k','open kanji details',function(e) { liberator.open(decodeURIComponent("http://jisho.org/search/" + e.textContent + "%2523kanji")); }); 

Соответствует регулярному выражению:

Я не уверен, использует ли Vimperator XPath 1.0 или 2.0, или даже если он позволяет использовать все возможности выражений XPath. Я только пробовал очень простые выражения. XPath 1.0 не допускает регулярные выражения (поэтому вам придется обойтись без функциональности, которую он предоставляет). Тем не менее, XPath 2.0 имеет поддержку регулярных выражений . Таким образом, вы можете использовать их. (Я хочу посмотреть на это сам когда-нибудь.)

Запуск скрипта:

Вы можете сделать это с помощью :!команды. Произвольные команды «ex» могут быть запущены из JS с помощью liberator.execute(), поэтому для запуска сценария оболочки вы можете передать такую ​​функцию в hints.addMode:

function(e) { liberator.execute("!~/bin/script " + e.textContent) } 

Обратите внимание на пентадактиль.

Все здесь в равной степени относится к Pentadactyl, за исключением API JS, вы должны заменить liberatorна dactyl.

Я попытаюсь взглянуть на это позже.

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