Em primeiro lugar, o Firefox baseia as configurações em "Escolher aplicativo auxiliar" nas configurações do sistema, portanto, não há uma maneira simples de configurá-lo.
Uma solução ainda melhor, em termos de usabilidade, é usar a extensão do Firefox chamada "Abrir com" link
Ele diz que é para navegadores da Web, mas acontece que pode ser qualquer programa - ele apenas chama ele programa com a URL como o primeiro argumento.
Em seguida, eu escrevi um script em Python:
import sys, os, re, tempfile, urllib, urlparse, time
handler, url = sys.argv[1:3]
match = re.match(r".*(\.[A-Za-z_]+)$", urlparse.urlparse(url).path)
tmpfile, tmpfile_path = tempfile.mkstemp(suffix=match.group(1) if match else '')
os.close(tmpfile)
print "Downloading to temp file ..."
urllib.urlretrieve(url, tmpfile_path)
#Normally it would try to clean up the file we urlretrieved after this Python
#process ends. Thank BDFL there are no access restrictions on private variables.
urllib._urlopener._URLopener__tempfiles = []
os.execlp(handler, handler, '%s' % tmpfile_path)
#We don't attempt to delete the temporary file because:
# 1. Firefox also doesn't in such cases.
# 2. It's problematic in some instances, such as when the subprocess (this
# script used to call the handler in a subprocess) finds another copy
# of itself running, hands the file over to it and exits. Meanwhile, we
# would be over here deleting the file while the subprocess'es brother
# hadn't tried to open it yet.
O que faz:
-
Cria um nome de arquivo exclusivo no diretório Temp do usuário (mesmo local em que o Firefox armazena arquivos nesses casos).
-
Garante que a extensão do arquivo temporário será são, mesmo com um URL incluindo cadeias de caracteres de consulta e âncoras de hash (
urlretrieve(..)
sem um segundo argumento manipula o primeiro, mas não o último). Isso é útil porque informa ao Vim como realçar a sintaxe do arquivo. -
Faz o download do arquivo da URL para o diretório
Temp
do usuário atual. -
Abre o arquivo com
gvim.exe
(ou um editor de sua escolha - veja abaixo).
Como usar esta solução:
-
Salve o script Python acima como
open_with.py
em algum lugar onde você guarda esses scripts. -
Instale a extensão Abrir com Firefox no link acima e reinicie o Firefox.
-
Vá para
Tools > Add-ons > Extensions > Open With > Options
. Lá:(a). (A menos que você planeje usar Abrir com para o propósito pretendido, "Ocultar" todos os navegadores da lista.)
(b). "Adicionar ..."
python.exe
.(c). Defina seus "Argumentos ..." para o caminho do script seguido pelo nome do arquivo executável ou caminho do editor. Para mim, isso seria
C:\E\infrastructure\open_with.py gvim.exe
(d). "Renomear ..." para "gVim".
-
Certifique-se de que
gvim.exe
esteja na variável PATH. Eu recomendo o script EditPATH Autohotkey , que é compilável para um EXE usando o AHK ferramentas (coloque-o na pastaQuick Launch
por conveniência - editar PATH se torna três cliques, em vez de ter que passar pelo teste de memória do Painel de Controle novamente.) Caso contrário, você deve fornecer o caminho completo degvim.exe
na etapa 3 ( c). -
É isso. Agora, encontre um link para um arquivo no Firefox, clique com o botão direito e escolha "Abrir link com o gVim".
(Adivinhacomoencontreioíconecorreto:)
Bônus:sevocêdefiniraconfiguraçãorelevantenasOpçõesdeAbrir>,vocêpodeclicarcomobotãodireitodomouseemumaguiadoFirefoxeabrirpáginasdawebnoVimtambém-ouseja,como"Ver Fonte", exceto usando Vim.
Note que esta solução se aplica tão bem ao Emacs, ao Notepad ++ e a muitos outros softwares não restritos a editores de texto. Por exemplo, eu apenas tentei com o GIMP e ele abriu um arquivo PNG. (Para fazer isso, substitua gvim.exe
acima pelo caminho para o GIMP. Nota: para abrir uma imagem arbitrária dessa maneira, não apenas um link, você pode Visualizar imagem e clicar com o botão direito do mouse tab.)
Nota histórica: inicialmente eu fui escrever um script BAT, mas isso se tornou insustentável depois que ele falhou neste caso de teste: link
Isso porque cmd.exe
tem problemas com argumentos que contêm o caractere =
. Além disso, não foi apenas uma questão de chamar gvim.exe
com a URL como o argumento da linha de comando (embora o Vim aceite URLs), porque não pode manipular este caso de teste - apenas abre uma instância vazia do Vim. E para analisar a URL, eu teria que recorrer ao Powershell, o que restringe um pouco a portabilidade da solução. No final, decidi que ter uma instalação do Python como pré-requisito não é pedir muito.