2012-09-18 20 views
5

Aunque nunca lo he intentado, aparentemente es posible editar remotamente un archivo en vim como se describe en here. En mi caso particular, el servidor Necesito acceso sólo se puede acceder desde el campus, por lo tanto, tengo que acceder a mi cuenta de la universidad, así:Usando vim para editar remotamente un archivo en el servidorB solo accesible desde el servidor A

ssh [email protected] 

luego desde allí iniciar sesión en el servidor seguro de este modo:

ssh [email protected] 

he ssh sin llave establecido, por lo que puede automatizar el proceso de esta manera:

ssh [email protected] -t "ssh [email protected]" 

hay alguna forma de editar un archivo de forma remota como secure.university.com/user/foo.txt en mi mac locales hine?

EDIT:

Mi intención es usar vim en mi máquina local, ya que es poco práctico (mover .vim folder, copiar .vimrc) y en algunos casos imposible (recompilar Vim con ciertos ajustes, fuente de vim parche, instalar embellecedores de idiomas) para hacer que vim en la máquina remota se comporte de la manera que yo quiero que se comporte. Lo que quiero es emitir algo como esto (esto no es precisa SCP, sé)

vim scp://[email protected] scp://[email protected]//home/user/foo.txt 

Respuesta

4

OK después de un poco de trabajo, lo descubrí. Primero debe editar (o crear) su archivo .ssh/config como se describe en here. Para nuestros propósitos, agregaremos una línea como esta, que básicamente agrega un proxy.

Host secure 
    User   Julius 
    HostName  secure.university.com 
    ProxyCommand ssh [email protected] nc %h %p 2> /dev/null 

Entonces podemos simplemente copiar (a través de scp) el archivo secure.university.com:/home/Julius/fee/fie/fo/fum.txt en el equipo local al igual que

scp secure:/home/Julius/fee/fie/fo/fum.txt fum.txt 

Extendiéndose sobre esto, podemos cargarlo en vim forma remota, así:

vim scp://secure//home/Julius/fee/fie/fo/fum.txt 

o usando badd como tal:

:badd scp://secure//home/Julius/fee/fie/fo/fum.txt 

Para simplificar mi vida, he añadido este acceso directo para mi archivo .vimrc para la subcarpeta más utilizado:

nnoremap <leader>scp :badd scp://secure//home/Julius/fee/fie/fo/fum.txt 

Hasta ahora vim ha demostrado ser muy conscientes de que este es un archivo remoto, por lo que si el fichero C incluye un archivo de este modo:

#include "foo.h" 

no se quejan de que "foo.h" no se encuentra

0

Una vez que SSHed en la máquina puede ejecutar cualquier comando (también vim) en el host remoto en su concha. Después de iniciar sesión, ejecute vim mientras se ejecuta en su máquina.

+0

lo siento por la confusión, por favor ver la edición que hice – puk

0

Dado que está utilizando ssh, básicamente tiene acceso al servidor a través de la CLI, como si estuviera sentado frente a la máquina. Dicho esto, puede usar cualquier programa en esa máquina, al igual que lo usaría en su propia máquina. Suponiendo que el secure.university.com/user/foo.txt significa que hay un archivo de texto llamado foo.txt en la ubicación /user en el servidor seguro, a continuación, los siguientes comandos funcionarían después de iniciar sesión a través de SSH:

cd /user 
vim foo.txt 

También es posible usar nano o cualquier otro CLI basada editor que está instalado en la máquina.

+0

lo siento, debo no lo he dejado lo suficientemente claro como para editar remotamente en vim. Voy a actualizar mi pregunta para reflejar esto – puk

Cuestiones relacionadas