pentadactyl - 命令的语法糖

pentadactyl - 命令的语法糖

Pentadactyl:在命令中使用当前选项卡的 url我学会了如何创建一个使用当前缓冲区 URL 的命令。我用它来重写 URL 以使用假设“通过假设”代理:

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

答案1

定义别名

最简单的方法是该命令的别名并映射键绑定以调用该别名。

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. 使用-exmap命令的选项。

    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是消息消失前的延迟时间(以毫秒为单位)。如果您希望消息一直保留到您输入新命令或更改选项卡,只需完全删除最后一行即可。

相关内容