Consejos de Vim: lea y escriba archivos remotos con Vim en Linux
Hace un tiempo, discutimos cómo editar archivos remotos con el editor Vim en Linux. Usando ese método, editamos archivos almacenados en un sistema remoto a través de SSH sin tener que iniciar sesión en el sistema remoto. Hoy discutiremos un consejo similar de Vim: leer y escribir archivos remotos con Vim. A partir de la versión Vim 7.x, el complemento netrw.vim se instala como complemento estándar de forma predeterminada. Este complemento permite a los usuarios leer, editar, escribir y explorar archivos remotos a través de ftp, rcp, scp o http.
¿Qué es el complemento Netrw?
Para aquellos que se preguntan, el complemento Netrw (lectura, escritura y navegación orientada a la red) admite la edición, lectura y escritura de archivos locales y remotos a través de redes. También admite la navegación en directorios locales y remotos. Para obtener más detalles, escriba :help netrw dentro de su sesión de vim. Sigamos adelante y veamos cómo leer o escribir archivos almacenados en un sistema Linux remoto desde nuestro sistema local usando Vim.
Leer y escribir archivos remotos con Vim en Linux
Leer y escribir archivos remotos es casi lo mismo que editar archivos remotos.
Para leer un archivo remoto desde nuestro sistema local, simplemente lo abrimos usando el comando:
vim scp://sk@192.168.225.22/info.txt
Escriba q para salir del archivo.
Para escribir en el archivo remoto, simplemente ábralo como se muestra arriba y presione "i" para ingresar al modo de inserción y finalmente comenzar a escribir en él. Una vez que haya terminado, presione ESC y escriba :wq para guardar y salir.
Lo que realmente sucede en segundo plano es que el archivo remoto se copia en el directorio "/tmp" de su sistema local usando el comando scp. Y luego el archivo se abre para editarlo. Una vez que haya terminado, el comando scp copia el archivo nuevamente al sistema remoto.
Vea el contenido del archivo remoto desde su sistema local para verificar si el archivo realmente se ha modificado usando el comando:
ssh sk@192.168.225.22 cat info.txt
Tenga en cuenta que si desea mencionar la ruta absoluta del directorio en el host remoto, utilice barras dobles (//) como se muestra en el siguiente comando:
vim scp://sk@192.168.225.22//home/sk/Documents/info.txt
En caso de que ya haya cambiado el puerto SSH predeterminado por motivos de seguridad, debe mencionar explícitamente el puerto SSH como se muestra a continuación.
vim scp://sk@192.168.225.22:2200/info.txt
Reemplace 2200 con su número de puerto SSH.
Si no tiene acceso ssh/scp, puede utilizar otros protocolos, por ejemplo ftp, como se muestra a continuación.
vim ftp://user@remotesystem/path/to/file
Leer y escribir archivos remotos dentro de la sesión de Vim
Si ya está dentro de una sesión de Vim, puede leer y escribir archivos remotos usando los comandos Nread (NetRead) y Nwrite (NetWrite).
Abra el editor Vim en su sistema local usando el siguiente comando:
vim
Ahora estás dentro de la sesión de Vim. Para leer un archivo remoto desde la sesión local de Vim en un nuevo búfer, simplemente ejecute:
:e scp://sk@192.168.225.22/info.txt
Alternativamente, puede utilizar el comando "Nread" como se muestra a continuación.
:Nread scp://sk@192.168.225.22/info.txt
O,
:Nread "scp://sk@192.168.225.22/info.txt"
Para obtener más detalles, escriba el siguiente comando dentro de la sesión de Vim:
:Nread ?
Después de leer el archivo, escriba :q para salir.
De manera similar, para escribir el archivo remoto, ejecute:
:e scp://sk@192.168.225.22/info.txt
Presione "i" para ingresar al modo de inserción y comenzar a escribirlo/modificarlo.
También puedes usar el comando :w para crear y escribir archivos. Pero este comando creará sólo un nuevo archivo vacío.
:w scp://sk@192.168.225.22/info.txt
Después de escribir, presione ESC y escriba :wq para guardar y salir.
Alternativamente, use el comando "Nwrite" para crear y escribir archivos como se muestra a continuación.
:Nwrite scp://sk@192.168.225.22/info.txt
Para conocer más detalles sobre Nwrite, escriba lo siguiente en la sesión de Vim:
:Nwrite ?
Espero que esto ayude.
Lectura sugerida:
- Ejecutar comandos en sistemas Linux remotos a través de SSH