Tengo que editar algunos archivos ubicados en algún servidor al que pueda acceder a través de ssh.
Preferiría editar estos archivos de forma personalizada vim
en mi estación de trabajo (no tengo derechos para cambiar la vim
configuración en el servidor remoto). A veces me gustaría editar un archivo con sublime text
u otro editor de GUI.
Por supuesto, puedo descargar estos archivos, editarlos localmente y subirlos de nuevo al servidor. ¿Hay alguna solución más elegante?
deb
basadas y, por lo tanto, no lo tienenapt-get
. (En cuyo caso,yum
ozypper
podría estar presente). También requieren root en la máquina local, que puede o no estar disponible. (Esto no quiere decir que sea una mala solución, pero viene con un gran requisito previo).osxfuse
ysshfs
. Estos se pueden instalar con homebrew (brew install sshfs
ybrew cask install osxfuse
, o de paquetes obtenidos de osxfuse.github.ioPuede hacerlo de
scp
esta manera:Observe las dos barras
//
entre el servidor y la ruta, que es necesaria para resolver correctamente la ruta absoluta. (La primera barra es sintáctica, mientras que la segunda barra especifica el directorio raíz del usuario remoto, como de costumbre. Para comenzar en el directorio de inicio, lo haría[:port]/~/path/to/file.txt
).[:port]
Es opcional.Esto es manejado por el complemento estándar netrw.vim de vim . Varios otros protocolos son compatibles.
fuente
E382: Cannot write, 'buftype' option is set
:set buftype=""
en vim.~/.ssh/config
y resolverá hosts remotos convim scp://[host]/path
.:e scp://...
Dependiendo de lo que quiera decir cuando dice que no tiene los derechos para editar la configuración de Vim, puede haber una forma de usar Vim en el servidor de la manera que desee de todos modos. Si no puede cambiar su usuario
.vimrc
(porque está iniciando sesión como un usuario compartido, por ejemplo) pero aún puede crear archivos, créelo como un archivo llamado, digamos,Loom.vimrc
y luego llame a Vim usando el-u
interruptor:vim -u ~/Loom.vimrc file_to_edit
Incluso puede usar un alias:
alias vim='vim -u ~/Loom.vimrc'
le permitirá usar Vim de la manera habitual, y aún cargará su.vimrc
archivo personalizado . Este alias no persistirá después de cerrar sesión, por lo que no debe preocuparse por si alguien más usa accidentalmente su Vim personalizado.fuente
Dependiendo de cuántos archivos y qué tipo de archivos espere editar, quizás esto no sea exactamente lo que desea hacer aquí, pero creo que vale la pena mencionarlo. Si tiene que editar archivos en un servidor remoto, pero quiere usar todo lo que tiene en su propia estación de trabajo, entonces puede comenzar a pensar en usar algún tipo de sistema de Control de Revisión en sus máquinas. De esa manera, puede modificar sus copias locales en su propia máquina utilizando el software de su elección, confirmar los cambios y luego simplemente actualizar las copias locales en la máquina de destino. Además de editar los archivos con cualquier software con el que se sienta cómodo, tiene el valor agregado de tener un historial de cambios relacionados con cada archivo, que siempre es bueno.
Aquí hay una lista de software de control de revisiones , por si acaso.
fuente
git
, empujarlo a algo asígithub
y extraer los cambios degithub
su máquina local para hacer cambios allí?Para ampliar la respuesta del Sr. Potts: También puede hacer lo anterior, luego poner algo como esto en .bash_profile (o lo que sea que use su shell):
donde Loom es su ID de usuario original en el que inicia sesión.
Si está iniciando sesión como una cuenta compartida (y no como una cuenta individual, entonces sudo demanda, entonces Von Neuman tenga piedad de su alma porque está perdido.
Hubiera puesto esto en un comentario, pero no pude formatear el código en absoluto.
fuente
Si tiene una sesión vim ejecutándose ya use
:silent e scp://user@myserver[:port]//path/to/file.txt
El
:silent
frente suprimirá elPress Enter to Continue
mensajey
e scp://user@myserver[:port]//path/to/file.txt
es elEx
comando de modo para editar el archivo remnote.Probado con la
BitVise SSHD
ejecución en Windows 10 y el uso de VIM en Ubuntu 16.04fuente
Press Enter to Continue
carga inicial, pero no la posterior:w