Como posso fazer o gx reconhecer URLs completos no vim?


19

Por padrão, se um buffer no vim contiver uma URL como http://www.google.com, gxno modo normal, será aberto um navegador com essa URL. Isso é muito útil. No entanto, se a URL tiver parâmetros de URL (por exemplo http://www.google.com/search?q=stuff), os parâmetros da URL serão perdidos (ou seja, apenas http://www.google.com/searchserá aberto).

Estou usando o patch 183 do MacVim 7.4, com o Chrome como navegador principal (no OS X 10.9).

Existe uma maneira fácil, idealmente com personalização mínima, de gxreconhecer um URL completo?


Não consigo reproduzir isso com o vim 7.4 no linux. O parâmetro é passado para o firefox corretamente ao usar 'let g: netrw_browsex_viewer =' firefox 'para mim.
PhilippFrank

@PhilippFrank O URL de exemplo também não funciona para mim (Vim 7.4, Linux) ... De qualquer forma, minha solução é selecionar o URL no modo visual e usá-lo gx(o que não é ideal, mas melhor do que copiar / colar) )
Martin Tournoij

1
É uma variável, não uma opção, então você precisa usá-lo let.
Martin Tournoij

1
Não consigo reproduzir com o GVim 7.4 no Windows e no Chrome. Todos os URLs que você mencionou são abertos exatamente por gx.
Gonçalo Ribeiro

1
Confirmando o erro do OP. Tentei com o VIM 7.4.473 e 7.4.663. Tentou de conta de utilizador prestine (sem .vimrc), com diferentes terminais ( urxvt, sakura) e diferentes navegadores ( g:netrw_browsex_viewerconjunto de 'uzbl-browser'/ 'firefox'/ 'google-chrome'.
user569825

Respostas:


13

Como aponta @Carpetsmoker em seu comentário, g:netrw_gxdetermina o que será considerado parte de um URI.

Por padrão, está definido como "<cfile>". Dos documentos ( :help <cfile>):

<cfile> is replaced with the path name under the cursor

Escapa-me, por que partes de parâmetros (ou seja ?) de uma URL estão sendo desconsideradas como partes de um "nome do caminho", mas finalmente escolhi definir o seguinte, como minha solução:

" Use whole "words" when opening URLs.
" This avoids cutting off parameters (after '?') and anchors (after '#'). 
" See http://vi.stackexchange.com/q/2801/1631
let g:netrw_gx="<cWORD>"                                                                                                                   

Agora, isso inclui o Wque você selecionaria. (Experimente viWuma string no VIM.)

Dos documentos: <cWORD> is replaced with the WORD under the cursor


Dica: Usando gxno modo visual , ele abrirá a sequência selecionada visualmente (independentemente da configuração acima).


Outro comportamento estranho: quando o URI termina em a /, é baixado primeiro (com curl) e depois aberto. Removendo o final /, o URI é aberto diretamente no navegador.
user569825

2
"nome do caminho" é definido pela 'isfname'opção, que não inclui ?por padrão um caractere de nome de arquivo válido. Alterar essa opção requer cuidado, pois não pode ser definido como local no buffer. A menos que o NetRW esteja alterando essa opção, isso explica por que os URLs dos OPs não funcionam gx. Talvez haja uma diferença nas versões do NetRW sendo usadas, o que explicaria o comportamento diferente que Carpetsmoker vê.
jamessan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.