пентадактиль - синтаксический сахар для командования

287
Joe Corneli

На пентадактиле: используйте URL текущей вкладки в команде. Я узнал, как создать команду, которая использует URL текущего буфера. Я использую это, чтобы переписать URL-адрес для использования прокси-сервера hypothes.is «через гипотезу»:

map -builtin <C-x><C-V> :execute ':open http://via.hypothes.is/' + buffer.URL 

Но когда я нажимаю, C-xC-Vя вижу всю команду, напечатанную в «области эха»:

:execute ':open http://via.hypothes.is/' + buffer.URL 

Есть ли способ сделать эту распечатку более краткой, чтобы у всей этой команды был псевдоним :via?

0

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

1
pyrocrasty

определение псевдонима

Простейшим способом было бы дать команде псевдоним и сопоставить привязку клавиш для вызова этого псевдонима.

command! via :execute ':open http://via.hypothes.is/' + buffer.URL map -b <C-x><C-V> :via 

Затем вы можете выполнить команду либо с помощью связывания клавиш, либо в командной строке через ее псевдоним via.

выполнение команды немедленно

Тем не менее, вам действительно нужна команда, чтобы распечатать в командной строке и ждать, пока вы нажмете Enter? Предпочтительным решением было бы просто немедленно выполнить команду при выполнении привязки клавиш. Вы можете сделать это одним из следующих способов:

  1. добавление <CR>в конец команды, которую вы выполняете

    map <C-x><C-v> :via<CR> 

    (это решение переносимо на Vimperator); или же

  2. используя -exопцию для mapкоманды.

    map <C-x><C-v> -ex via 

выполнение команды и печать сообщения

Если по какой-то причине вам не нужен фактический псевдоним, а просто хотите, чтобы команда выполнялась при печати «via» в области эха, вы можете использовать привязку, подобную этой:

map <C-x><C-V> -js  \ dactyl.open('http://via.hypothes.is/' + buffer.URL); \ commandline.echo('via',commandline.HL_INFOMSG); \ setTimeout(function(){ commandline.echo('', commandline.HL_INFOMSG); }, 500); 

В 500конце указывается задержка (в миллисекундах) до исчезновения сообщения. Если вы хотите, чтобы сообщение оставалось до тех пор, пока вы не введете новую команду или не измените вкладки, просто полностью удалите последнюю строку.

@Joe Corneli: спасибо за указание на отсутствующие нажатия клавиш в командах `map` второго раздела. Не уверен, почему ваше редактирование было отклонено, но я все равно исправил команды. pyrocrasty 8 лет назад 0