¿Estás tratando de salir de VIM? Si este es el caso, presione "escape" y luego escriba ': q'
Pop
47
¡No te olvides del colon ! Debe escribir :quity luego presionar la [ENTER]tecla.
Farahmand
88
Es realmente fácil aprender los conceptos básicos de vim, y está integrado en su sistema. En terminal escriba "vimtutor". ¡25 minutos después, irás más rápido que tu editor de texto habitual!
Para evitar git commitenviarte a vim en el futuro: git config --global core.editor="nano"
Tom Kelly
Respuestas:
4906
Presione la Esctecla para ingresar al "Modo normal". Luego puede escribir :para ingresar al "Modo de línea de comandos". Aparecerán dos puntos ( :) en la parte inferior de la pantalla y puede escribir uno de los siguientes comandos. Para ejecutar un comando, presione la Entertecla.
:q para dejar de fumar (abreviatura de :quit)
:q!salir sin guardar (abreviatura de :quit!)
:wq escribir y dejar de fumar
:wq! escribir y salir incluso si el archivo solo tiene permiso de lectura (si el archivo no tiene permiso de escritura: forzar escritura)
:x escribir y salir (similar a :wq, pero solo escribir si hay cambios)
:exitescribir y salir (igual que :x)
:qapara dejar todo (abreviatura de :quitall)
:cq salir sin guardar y hacer que Vim devuelva un error distinto de cero (es decir, salir con error)
También puede salir de Vim directamente desde el "Modo normal" escribiendo ZZpara guardar y salir (igual que :x) o ZQsimplemente para salir (igual que :q!). (Tenga en cuenta que el caso es importante aquí ZZy zzno significa lo mismo).
Vim tiene una amplia ayuda, a la que puede acceder con el :helpcomando, donde puede encontrar respuestas a todas sus preguntas y un tutorial para principiantes.
A menos que haya reasignado esc o tenga una asignación extraña en su .vimrc, entonces definitivamente debería. Si está en Linux, escriba xev y asegúrese de que escape sea el tipo de clave que obtiene cuando presiona escapar.
:x== ZZpero :x! = :wq. :xescribir archivo si el archivo ha cambiado, :wqescribir archivo siempre (es decir, cuando se usa inotify).
Hauleth
36
Para ser honesto, me resulta más difícil usar el sistema de ayuda de vim que usar el propio vim, y confío principalmente en tarjetas de referencia rápida y documentación en línea.
bgvaughan
18
si no tiene permisos en el archivo pero tiene permisos de sudo:w ! sudo tee %
tvlooy
190
Las imágenes valen más que mil comandos y opciones de Unix:
Dibujo esto a mis alumnos cada semestre y parecen entender vi después.
Al comenzar, vi entra en el modo COMANDO, donde puede escribir comandos cortos de pocos caracteres, a ciegas . Sabes lo que estas haciendo; Esto no es para aficionados.
Cuando realmente desee editar texto, debe ir al modo INSERTAR con algún comando de un carácter:
i: vaya a INSERTAR en el lugar del cursor
I: ir al modo INSERT al principio de la línea
a: agregar después del cursor
A: agregar al final de la línea
o: abre una nueva línea debajo de la línea actual
O: abre una nueva línea en el lugar de la línea actual
Ahora, respondiendo a la pregunta: salir.
Puede salir de vi desde el modo EX:
q: si no ha realizado modificaciones o las ha guardado de antemano
q !: ignora cualquier modificación y sale
wq: guardar y salir
x: esto es igual a wq
wy xacepte un parámetro de nombre de archivo. Si comenzó a vi con un nombre de archivo, no necesita volver a ingresarlo aquí.
Por último, lo más importante: ¿cómo puede llegar al modo EX?
El modo EX es para comandos largos que puede ver escribiendo en la línea inferior de la pantalla. Desde el modo COMANDO, presiona dos puntos, :y aparecerá dos puntos en la línea inferior, donde puede escribir los comandos anteriores.
Desde el modo INSERTAR, debe presionar ESC, es decir, el botón Escape, ir al modo COMANDO y luego: ir al modo EX.
Si no está seguro, presione ESC y eso lo llevará al modo de comando.
Entonces, el método robusto es ESC -: - x-Enter que guarda su archivo y se cierra.
Gracias, la imagen es muy útil. Sin embargo, para mí wno cambia del modo Ex al Comando, pero Escsí. ¿Qué estoy haciendo mal?
Nick Volynkin
2
Si escribe w-Enter que guarda su archivo y vuelve al modo de COMANDO. Lo escribí para tener una imagen completa de los comandos guardar y salir.
Gergely
3
oh, entonces quieres decir :w. Entonces tiene mucho sentido. Por cierto, ¿hay un comando para recargar desde el disco (es decir, para revertir los cambios pero no cerrar el archivo)? Si es así, podría estar al lado wdel diagrama.
Nick Volynkin
2
@Gergely ¡Acabo de descubrir la confusión! ¡Desde los documentos, el modo normal también se llama modo comando ! Entonces, modo de comando! = Modo de línea de comando. ¡Guauu!
jpaugh
2
@NickVolynkin el comando para recargar desde el disco es :e(o más probable :e!ya que le advertirá sobre los cambios no guardados sin el !)
JDS
177
Antes de ingresar un comando, presione la Esctecla . Después de ingresarlo, presione Returnpara confirmar.
Escfinaliza el comando actual y cambia Vim al modo normal . Ahora, si presiona :, :aparecerá en la parte inferior de la pantalla. Esto confirma que en realidad está escribiendo un comando y no está editando el archivo.
La mayoría de los comandos tienen abreviaturas, la parte opcional entre paréntesis: c[ommand].
Los comandos marcados con '*' son solo Vim (no implementado en Vi).
Safe-quit (falla si hay cambios sin guardar):
:q[uit] Salir de la ventana actual . Salga de Vim si esta es la última ventana. Esto falla cuando se han realizado cambios en el búfer actual .
:qa[ll]* Salga de todas las ventanas y Vim, a menos que haya algunos buffers que se hayan cambiado.
Preguntar-salir (pregunta si hay cambios no guardados)
:conf[irm] q[uit]* Salga, pero avise cuando haya algunos buffers que han sido cambiados.
:conf[irm] xa[ll]* Escriba todos los buffers modificados y salga de Vim. Aparece un mensaje cuando no se pueden escribir algunos buffers.
Escriba (guarde) los cambios y salga:
:wqEscriba el archivo actual (incluso si no se modificó) y salga. La escritura falla cuando el archivo es de solo lectura o el búfer no tiene nombre. :wqa[ll]* para todas las ventanas.
:wq!Lo mismo, pero escribe incluso archivos de solo lectura. :wqa[ll]!* para todas las ventanas.
:x[it], ZZ(con detalles ). Escriba el archivo solo si se modificó y salga, :xa[ll]* para todas las ventanas.
Descarte los cambios y salga:
:q[uit]!ZQ* Salga sin escribir, también cuando los buffers visibles tengan cambios. No sale cuando se cambian los buffers ocultos.
:qa[ll]!*, :quita[ll][!]* Salga de Vim, se pierden todos los cambios en los búferes (incluidos los ocultos).
Presione Returnpara confirmar el comando.
Esta respuesta no hace referencia a todos los comandos y argumentos de escritura y salida de Vim. De hecho, se mencionan en la documentación de Vim .
Vim tiene una amplia ayuda incorporada, escriba Esc:helpReturnpara abrirla.
Esta respuesta fue inspirada por la otra , escrita originalmente por @dirvine y editada por otros usuarios de SO. He incluido más información de la referencia de Vim, comentarios SO y algunas otras fuentes. Las diferencias para Vi y Vim también se reflejan.
Si desea salir sin guardar en Vim y hacer que Vim devuelva un código de salida distinto de cero, puede usarlo :cq.
Lo uso todo el tiempo porque no me molesto en cambiar de meñique !. A menudo canalizo cosas a Vim que no necesitan guardarse en un archivo. También tenemos un contenedor SVN extraño en el trabajo que debe salir con un valor distinto de cero para abortar un registro.
También lo uso para abortar un git commit, o visudo, o crontab, ...
Josh Lee
Anular un git commit :q!funciona bien, ya que git está buscando un mensaje no vacío y no un código de salida distinto de cero.
moopet
Sé que funciona, es solo eso: cq no requiere la tecla shift. :-)
Sue Spence
47
Esto es para el peor de los casos de salir de Vim si solo quiere salir, no tiene idea de lo que ha hecho y no le importa lo que sucederá con los archivos que abrió.
Ctrl-cEnterEnterviEnterCtrl-\Ctrl-n:qa!Enter
Esto debería sacarte la mayor parte del tiempo.
Algunos casos interesantes donde necesitas algo como esto:
iCtrl-ovg (ingresa al modo de inserción, luego al modo visual y luego al modo pendiente del operador)
QappendEnter
iCtrl-ogQCtrl-r=Ctrl-k (gracias a porges por este caso)
:set insertmode(este es un caso cuando Ctrl-\Ctrl-nvuelve al modo normal)
Editar: esta respuesta se corrigió debido a los casos anteriores. Solía ser:
EscEscEsc:qa!Enter
Sin embargo, eso no funciona si ha ingresado al modo Ex. En ese caso, deberías hacer:
viEnter:qa!Enter
Entonces, un comando completo para "No quiero saber lo que he hecho y no quiero guardar nada, ¡solo quiero salir ahora!" sería
@cavalcade Este es un método extremadamente general para garantizar que el editor esté en modo normal y luego se cierre de forma segura. En uso normal, todo lo que necesita es :qo:wq
Dan Passaro
66
¡No es lo suficientemente general! ¿Qué pasa si yo (un principiante) escribí i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>?
porges
@porges gracias por el caso de prueba! También hay otros casos de prueba que demuestran que el método original fue lamentable. Edité la respuesta para que sea más general ahora.
Heikki Naski
@HeikkiNaski, al menos para mí, también necesito Enter después de Ctrl-C (para escapar del registro de expresiones)
porges
40
En caso de que necesite salir de Vim en modo fácil (mientras usa la -yopción), puede ingresar al modo normal de Vim presionando Ctrl+ Ly luego cualquiera de las opciones de salida normales funcionará.
Otra opción más: puede usar Ctrl+Opara salir temporalmente del modo INSERTAR y luego ingresar :q. El truco con esta combinación también es útil en vim normal para ejecutar un solo comando y volver al modo INSERTAR.
Andrey Starodubtsev
28
Vim tiene tres modos de operación: modo de entrada, modo de comando y modo Ex.
Modo de entrada : todo lo que escribe, todas las pulsaciones de teclas se repiten en la pantalla.
Modo de comando o modo de escape : todo lo que escribe en este modo se interpreta como un comando.
Modo Ex : este es otro editor, ex. Es un editor de línea. Funciona por línea o en base a un rango de líneas. En este modo, :aparece un en la parte inferior de la pantalla. Este es el ex editor.
Para salir de Vim, puede salir mientras está en modo ex o en modo comando. No puede salir de Vim cuando está en modo de entrada.
Salir del modo ex
Debe asegurarse de estar en el modo Comando. Para hacer eso, simplemente presione la Esctecla.
Vaya al modo ex presionando la :tecla
Utilice cualquiera de las siguientes combinaciones en modo ex para salir:
:q- salir
:q!- salir sin guardar
:wq- guardar y salir o escribir y salir
:wq!- igual que wq, pero forzar la escritura en caso de que los permisos de los archivos sean de solo lectura
:x- escribir y salir
:qa- salir de todo. útil cuando se abren varios archivos como:vim abc.txt xyz.txt
Salir del modo comando
Presione la tecla de escape. Probablemente ya lo haya hecho si está en modo comando.
Presione mayúscula ZZ ( shift zz) - guardar y salir
Presione mayúscula ZQ ( shift zq) - salga sin guardar.
Después de presionar ESC(o cmd+ Cen mi computadora) debe presionar :para que aparezca el símbolo del sistema. Entonces, puedes ingresar quit.
Es posible que la máquina no le permita salir porque su información no se ha guardado. Si de todos modos desea dejar de fumar, ingrese !directamente después de dejar de fumar (es decir :quit!).
Del mismo modo, para vim haciendo git en una macintosh esto funcionó.
Joel
1
@Joel acaba de verificar esto en mi Mac, ambos comandos son legítimos ( vim -version7.3).
Nick Volynkin
2
Para Git BashWindows, a Vimveces ESCno funciona. use CTRL+ en su [lugar.
Val
@Val Eso se ve extrañamente familiar. Iirc es porque los dos hacen lo mismo. Como en ^[es lo mismo que ESC. Es interesante que Windows lo haga más complicado. Y divertido
:quit
y luego presionar la[ENTER]
tecla.git commit
enviarte a vim en el futuro:git config --global core.editor="nano"
Respuestas:
Presione la Esctecla para ingresar al "Modo normal". Luego puede escribir
:
para ingresar al "Modo de línea de comandos". Aparecerán dos puntos (:
) en la parte inferior de la pantalla y puede escribir uno de los siguientes comandos. Para ejecutar un comando, presione la Entertecla.:q
para dejar de fumar (abreviatura de:quit
):q!
salir sin guardar (abreviatura de:quit!
):wq
escribir y dejar de fumar:wq!
escribir y salir incluso si el archivo solo tiene permiso de lectura (si el archivo no tiene permiso de escritura: forzar escritura):x
escribir y salir (similar a:wq
, pero solo escribir si hay cambios):exit
escribir y salir (igual que:x
):qa
para dejar todo (abreviatura de:quitall
):cq
salir sin guardar y hacer que Vim devuelva un error distinto de cero (es decir, salir con error)También puede salir de Vim directamente desde el "Modo normal" escribiendo
ZZ
para guardar y salir (igual que:x
) oZQ
simplemente para salir (igual que:q!
). (Tenga en cuenta que el caso es importante aquíZZ
yzz
no significa lo mismo).Vim tiene una amplia ayuda, a la que puede acceder con el
:help
comando, donde puede encontrar respuestas a todas sus preguntas y un tutorial para principiantes.fuente
:x
==ZZ
pero:x
! =:wq
.:x
escribir archivo si el archivo ha cambiado,:wq
escribir archivo siempre (es decir, cuando se usainotify
).:w ! sudo tee %
Las imágenes valen más que mil comandos y opciones de Unix:
Dibujo esto a mis alumnos cada semestre y parecen entender vi después.
vi es una máquina de estados finitos con solo tres estados.
Al comenzar, vi entra en el modo COMANDO, donde puede escribir comandos cortos de pocos caracteres, a ciegas . Sabes lo que estas haciendo; Esto no es para aficionados.
Cuando realmente desee editar texto, debe ir al modo INSERTAR con algún comando de un carácter:
Ahora, respondiendo a la pregunta: salir.
Puede salir de vi desde el modo EX:
w
yx
acepte un parámetro de nombre de archivo. Si comenzó a vi con un nombre de archivo, no necesita volver a ingresarlo aquí.Por último, lo más importante: ¿cómo puede llegar al modo EX?
El modo EX es para comandos largos que puede ver escribiendo en la línea inferior de la pantalla. Desde el modo COMANDO, presiona dos puntos,
:
y aparecerá dos puntos en la línea inferior, donde puede escribir los comandos anteriores.Desde el modo INSERTAR, debe presionar ESC, es decir, el botón Escape, ir al modo COMANDO y luego: ir al modo EX.
Si no está seguro, presione ESC y eso lo llevará al modo de comando.
Entonces, el método robusto es ESC -: - x-Enter que guarda su archivo y se cierra.
fuente
w
no cambia del modo Ex al Comando, peroEsc
sí. ¿Qué estoy haciendo mal?:w
. Entonces tiene mucho sentido. Por cierto, ¿hay un comando para recargar desde el disco (es decir, para revertir los cambios pero no cerrar el archivo)? Si es así, podría estar al ladow
del diagrama.:e
(o más probable:e!
ya que le advertirá sobre los cambios no guardados sin el!
)Antes de ingresar un comando, presione la Esctecla . Después de ingresarlo, presione Returnpara confirmar.
Escfinaliza el comando actual y cambia Vim al modo normal . Ahora, si presiona :,
:
aparecerá en la parte inferior de la pantalla. Esto confirma que en realidad está escribiendo un comando y no está editando el archivo.La mayoría de los comandos tienen abreviaturas, la parte opcional entre paréntesis:
c[ommand]
.Los comandos marcados con '*' son solo Vim (no implementado en Vi).
Safe-quit (falla si hay cambios sin guardar):
:q[uit]
Salir de la ventana actual . Salga de Vim si esta es la última ventana. Esto falla cuando se han realizado cambios en el búfer actual .:qa[ll]
* Salga de todas las ventanas y Vim, a menos que haya algunos buffers que se hayan cambiado.Preguntar-salir (pregunta si hay cambios no guardados)
:conf[irm] q[uit]
* Salga, pero avise cuando haya algunos buffers que han sido cambiados.:conf[irm] xa[ll]
* Escriba todos los buffers modificados y salga de Vim. Aparece un mensaje cuando no se pueden escribir algunos buffers.Escriba (guarde) los cambios y salga:
:wq
Escriba el archivo actual (incluso si no se modificó) y salga. La escritura falla cuando el archivo es de solo lectura o el búfer no tiene nombre.:wqa[ll]
* para todas las ventanas.:wq!
Lo mismo, pero escribe incluso archivos de solo lectura.:wqa[ll]!
* para todas las ventanas.:x[it]
,ZZ
(con detalles ). Escriba el archivo solo si se modificó y salga,:xa[ll]
* para todas las ventanas.Descarte los cambios y salga:
:q[uit]!
ZQ
* Salga sin escribir, también cuando los buffers visibles tengan cambios. No sale cuando se cambian los buffers ocultos.:qa[ll]!
*,:quita[ll][!]
* Salga de Vim, se pierden todos los cambios en los búferes (incluidos los ocultos).Presione Returnpara confirmar el comando.
Esta respuesta no hace referencia a todos los comandos y argumentos de escritura y salida de Vim. De hecho, se mencionan en la documentación de Vim .
Vim tiene una amplia ayuda incorporada, escriba Esc
:help
Returnpara abrirla.Esta respuesta fue inspirada por la otra , escrita originalmente por @dirvine y editada por otros usuarios de SO. He incluido más información de la referencia de Vim, comentarios SO y algunas otras fuentes. Las diferencias para Vi y Vim también se reflejan.
fuente
Si desea salir sin guardar en Vim y hacer que Vim devuelva un código de salida distinto de cero, puede usarlo
:cq
.Lo uso todo el tiempo porque no me molesto en cambiar de meñique
!
. A menudo canalizo cosas a Vim que no necesitan guardarse en un archivo. También tenemos un contenedor SVN extraño en el trabajo que debe salir con un valor distinto de cero para abortar un registro.fuente
:q!
funciona bien, ya que git está buscando un mensaje no vacío y no un código de salida distinto de cero.Esto es para el peor de los casos de salir de Vim si solo quiere salir, no tiene idea de lo que ha hecho y no le importa lo que sucederá con los archivos que abrió.
Ctrl-cEnterEnter
vi
EnterCtrl-\Ctrl-n:qa!
EnterEsto debería sacarte la mayor parte del tiempo.
Algunos casos interesantes donde necesitas algo como esto:
i
Ctrl-ovg
(ingresa al modo de inserción, luego al modo visual y luego al modo pendiente del operador)Qappend
Enteri
Ctrl-ogQ
Ctrl-r=
Ctrl-k (gracias a porges por este caso):set insertmode
(este es un caso cuando Ctrl-\Ctrl-nvuelve al modo normal)Editar: esta respuesta se corrigió debido a los casos anteriores. Solía ser:
EscEscEsc
:qa!
EnterSin embargo, eso no funciona si ha ingresado al modo Ex. En ese caso, deberías hacer:
vi
Enter:qa!
EnterEntonces, un comando completo para "No quiero saber lo que he hecho y no quiero guardar nada, ¡solo quiero salir ahora!" sería
vi
EnterEscEscEsc:qa!
Entrarfuente
:q
o:wq
i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>
?En caso de que necesite salir de Vim en modo fácil (mientras usa la
-y
opción), puede ingresar al modo normal de Vim presionando Ctrl+ Ly luego cualquiera de las opciones de salida normales funcionará.fuente
Ctrl+O
para salir temporalmente del modo INSERTAR y luego ingresar:q
. El truco con esta combinación también es útil en vim normal para ejecutar un solo comando y volver al modo INSERTAR.Vim tiene tres modos de operación: modo de entrada, modo de comando y modo Ex.
Modo de entrada : todo lo que escribe, todas las pulsaciones de teclas se repiten en la pantalla.
Modo de comando o modo de escape : todo lo que escribe en este modo se interpreta como un comando.
Modo Ex : este es otro editor, ex. Es un editor de línea. Funciona por línea o en base a un rango de líneas. En este modo, :aparece un en la parte inferior de la pantalla. Este es el ex editor.
Para salir de Vim, puede salir mientras está en modo ex o en modo comando. No puede salir de Vim cuando está en modo de entrada.
Salir del modo ex
Debe asegurarse de estar en el modo Comando. Para hacer eso, simplemente presione la Esctecla.
Vaya al modo ex presionando la :tecla
Utilice cualquiera de las siguientes combinaciones en modo ex para salir:
:q
- salir:q!
- salir sin guardar:wq
- guardar y salir o escribir y salir:wq!
- igual que wq, pero forzar la escritura en caso de que los permisos de los archivos sean de solo lectura:x
- escribir y salir:qa
- salir de todo. útil cuando se abren varios archivos como:vim abc.txt xyz.txt
Salir del modo comando
Presione la tecla de escape. Probablemente ya lo haya hecho si está en modo comando.
Presione mayúscula ZZ (
shift zz
) - guardar y salirPresione mayúscula ZQ (
shift zq
) - salga sin guardar.fuente
Después de presionar ESC(o cmd+ Cen mi computadora) debe presionar :para que aparezca el símbolo del sistema. Entonces, puedes ingresar
quit
.Es posible que la máquina no le permita salir porque su información no se ha guardado. Si de todos modos desea dejar de fumar, ingrese !directamente después de dejar de fumar (es decir
:quit!
).fuente
Obtuve Vim instalando un cliente Git en Windows.
:q
No saldría de Vim por mí.:exit
hizo sin embargo ...fuente
vim -version
7.3).Git Bash
Windows, aVim
vecesESC
no funciona. useCTRL
+ en su[
lugar.^[
es lo mismo queESC
. Es interesante que Windows lo haga más complicado. Y divertidoLa pregunta se ha hecho aquí .
El
q
comando con un número cierra la división dada en esa posición.:q<split position>
o:<split position>q
cerrará la división en esa posición.Digamos que el diseño de la ventana de Vim es el siguiente:
Si ejecuta el
q1
comando, cerrará la primera división.q2
cerrará la segunda división y viceversa.El orden de la posición dividida en el comando salir no importa.
:2q
o:q2
cerrará la segunda división.Si la posición de división que pasa al comando es mayor que el número de divisiones actuales, simplemente cerrará la última división.
Por ejemplo, si ejecuta la
q100
configuración de la ventana anterior donde solo hay tres divisiones, cerrará la última división (División 3).fuente