¿Cómo copio la URL debajo del cursor?

Oct 06 2020

En Vim, puedo usarlo gxen modo normal para abrir la URL debajo del cursor. En lugar de abrir la URL, ¿cómo puedo copiar la URL?

Estoy buscando algo más rápido que entrar en modo visual, seleccionar la URL y tirar de la URL seleccionada.

Respuestas

2 BLayer Oct 06 2020 at 21:28

Debería poder utilizar el mismo mecanismo que puede capturar rutas de archivo :

<cfile>    is replaced with the path name under the cursor (like what |gf| uses)

Esta palabra clave especial se puede resolver con su valor asociado en la línea de comando usando la función expand(). Por ejemplo, para poner la URL en un registro:

:let @0 = expand('<cfile>')

Si desea poner la URL en el portapapeles, utilice "*o "+regístrese (según su sistema y su configuración).

Agréguelo a un mapeo ...

:nnoremap <leader>u :let @* = expand('<cfile>')<CR>

... y con un par de pulsaciones de teclas, ahora puede pegar la URL donde la necesite.


Actualización: Un par de preguntas y respuestas extraídas de los comentarios que pueden ser útiles para otros ...

P: Cuando presiono pen modo normal para pegar la URL, ¿por qué no se pega nada?

R: El tipo de entorno (sistema operativo, administrador de ventanas, GUI vs terminal) en el que se encuentra generalmente dicta qué registro está vinculado al portapapeles del sistema. Si pegar / poner funciona para usted, de lo contrario, mire el registro que se usa allí y use el mismo en el mapeo. Si está utilizando * nix, el registro "quote-plus" ( @+) puede ser lo que necesita. ( ed- It was. ) Para obtener más detalles sobre el uso del portapapeles, :h 'clipboard'es un buen lugar en la ayuda de Vim para comenzar.

P: ¿Cómo puedo evitar que el comando mapeado aparezca en la barra de estado? :nnoremap <leader>u :silent let@* ...no funciona.

R: En lugar de usar :silentagregar <silent>después nnoremap.

:nnoremap <silent> <leader>u :let @* = expand('<cfile>')<CR>

<silent>se utiliza simplemente para evitar que se muestre un comando mapeado cuando se ingresan las claves mapeadas. Si el comando asignado también tiene salida que no quiere ver que necesita :silent , además de a <silent>.