2008-09-16 23 views
21

¿Cuáles son los comandos esenciales de vim? ¿Qué necesita saber un nuevo usuario para evitar meterse en problemas? Un comando por comentario, por favor.Vim/vi Guía de supervivencia

+1

Vuelva a escribir esto para pedir a las personas que solo publiquen * un * comando por respuesta para que puedan votar correctamente. – SCdF

+0

Sí. Por favor, vuelve a escribir esto. –

+0

Debería ser un wiki comunitario entonces. – mmcdole

Respuesta

3

Antes que nada necesitas saber cómo cerrar vi: ctrl-c: q!

Rest se puede encontrar desde vimtutor. Inicie vimtutor escribiendo vimtutor en su línea de comando

+0

Control-C, luego ': q!'? ¿Por qué Control-C? ¿Por qué no es simple ESC? – tzot

0

Uno de mis comandos favoritos es% G, que lleva directamente al final de un archivo. Especialmente útil en archivos de registro.

+1

En realidad, puedes soltar el '%' y simplemente escribir 'G'. El '%' no tiene sentido. –

+0

% no tiene sentido, ya que lo lleva a un soporte coincidente. Si no está dentro de los corchetes (cuadrados, rizados o paréntesis), entonces es un no-op. – tzot

27

He estado manteniendo un Vi Reference Card conmigo durante años. Es muy útil.

+0

Lo imprimí y lo fijé en mi tablero. ¡¡Es tan grande!! Gracias –

+0

Entonces, ¿cuál es el único comando vi para obtener la tarjeta de referencia vi pdf? -) – tzot

0

Cómo cambiar entre los modos (i para ingresar al modo de inserción (de muchas maneras), esc para salir del modo de inserción, dos puntos para el modo de comando) y cómo guardar y salir. (: Wq)

0

utilizo vi muy a la ligera, y sólo utilizar los siguientes comandos:

a - switch to insert mode (after the cursor) 
esc - return to command mode 
:wq - save and quit 
:q - quit (no save, only without modification) 
:q! - force quit (no save, also with modification) 
x - delete one character (in command mode) 
dd - delete the whole line (in command mode) 

Sé que hay muchos muchos más, pero esas son suficiente para conseguir que por.

+0

si solo los está usando, entonces un editor basado en scintilla (por ejemplo, notepad ++) es mucho mejor. – hasen

0

Otro comando útil es buscar algo:/ p./Mon buscará (y en el caso de vim highlight) cualquier ocurrencia de Mon en su archivo.

4
:q -> quit 
:w -> save 
:q! -> quit and don't save 
:x -> save and quit 
:[number] -> go to line number 
G -> go to end of file 
dd -> delete line 
p -> "put" line 
yy -> "copy" line 
:s/[searchfor] -> search 

supongo que esos son el básico que empezar desde

0

Como ya hemos mencionado un par de otras personas, vimtutor es el camino a seguir. Te enseñará todo lo que necesitas saber en vim. El único consejo general que le daría es mantenerse lo más alejado posible del modo de inserción. Hay una potencia enorme en los otros modos, solo se necesita un poco de práctica para acostumbrarse.

4

Utilice el comando 'J' (J para Unirse; mayúsculas) para eliminar la nueva línea al final de una línea. De lo contrario, te parecerá complicado.

5

Cuando tiene que tomar alguna acción repetitiva Las macros suelen ser más rápidas que las expresiones regulares. sólo tiene que escribir

q[0-9a-z] in normal mode 

Mucha gente utiliza

qq 

porque es rápido. Presione q en el modo normal nuevamente para detener la grabación. A continuación, sólo escriba

@[0-9a-z] in normal mode 

a repetir lo que acaba de grabar.

@q 

para el ejemplo anterior.

Editado para agregar: también puede repetir la macro. Digamos que programó una macro para saltar al principio de una línea, insertar una pestaña y luego saltar una línea. Luego prueba su macro escribiendo "@q" para ejecutarlo una vez. Luego puede repetir la acción nueve veces más escribiendo "9 @ q".

1

alias vi nedit :)

todo el humor a un lado .. para vi cuando no se utiliza nedit ..

  • i (interruptor al modo de inserción)
  • a (append = mover al final de línea y cambiar al modo de inserción)
  • esc (modo de inserción de salida)
  • dd dele te una línea
  • x borrar un carácter
  • :wq (guardar y salir)
  • / iniciar una búsqueda
  • n Buscar siguiente
  • ? búsqueda hacia atrás ..
  • yy (tirón) copiar una línea en el almacenamiento intermedio
  • pp (pegar) péguelo aquí
  • r (reemplazar un carácter)
  • <N> <command> este es un aseado - característica, pero agravante que le permite escribir los dígitos y después un comando de modo
  • 5dd eliminará 5 líneas

pero en este punto que también podría bien - man vi y actualice su memoria

Si bien hay MUCHOS más, cambié de Vi a nedit hace varios años, lo que me parece que tiene más funciones que puedo usar de forma regular más fácilmente. Edición por pestañas, barra de búsqueda incremental, selección de columna, copiar y pegar. ordena las líneas seleccionadas, busca y destruye dentro de la selección, doc completo o todos los documentos abiertos. menús desplegables ... y admite resaltado de sintaxis para todos los idiomas que uso ... (con archivos de patrones que he usado largo tiempo a lo largo de los años. VIM muchos ahora son equivalentes, pero tiene que introducir una característica que Nedit no tiene y una forma fácil de migrar mis archivos de patrones antes de cambiar de nuevo.

1

También es bueno ejecutar el vimtutor cuando el aprendizaje de estos comandos

0

i - el modo de inserción (escape para salir) dd - borrar línea turno-y - 'yanqui' (copia) de la línea p - 'Escribe' línea (s) (pasta) shift-v - Modo visual usado para seleccionar texto (tratando de "tirar" este texto y "ponerlo" en algún lugar). ctrl-w n - crear nueva ventana (puede abrir un archivo o iniciar un nuevo archivo aquí) ctrl-w v - dividir ventana existente verticalmente ctrl-n (en modo insertar) - autocompletar (si es compatible) :! ejecutar un comando de shell, por lo general con estándar en como el archivo o una selección (shift-V)

Complementos útiles a la vista: * Buffer Explorer - use \ be para ver archivos en el búfer (y seleccione -abierta)

1

Mi mayor consejo: ctrl + q salva el día cuando se pulse accidentalmente ctrl + s para guardar el archivo que se está trabajando

0

NB vi no es vim! vim se está convirtiendo rápidamente en los emacs del nuevo siglo. nvi es probablemente lo más parecido a la vi original. Aquí hay una buena pista: "xp" intercambiará dos personajes (pruébalo).

+0

"vim se está convirtiendo rápidamente en los emacs del nuevo siglo". Honestamente, no estoy seguro acerca de cómo interpretar esto. – Jeff

0

reemplazar 'foo' con 'bar' en cualquier parte del archivo de :% s/foo/bar/gc

14

Lo que me parece insustituible (ya que funciona en vi también , a diferencia del modo visual de vim) son marcas. Puede marcar varios puntos con m (minúsculas) y luego una letra de su elección (por ejemplo, x). Luego vas a otro lado y puedes regresar con `` x (backquote letter) to the exact spot, or with 'x` (letra de apóstrofe) para ir a la línea.

Estos movimientos se pueden usar como argumentos para comandos (yank, delete, etc.). Por ejemplo, desea eliminar 10 líneas; en lugar de contar y luego pasar a la línea superior e ingresar al 10dd, vaya al inicio o al final del bloque, presione mm (marcar m), luego vaya al otro extremo del bloque y presione d'm (eliminar apóstrofo metro). Si usa la función de comillas en lugar de apóstrofo en este ejemplo, la eliminación funcionará en función de los caracteres, no en línea. Intente marcar en el medio de la línea con "marcar m", moviéndose al centro de otra línea, luego ingrese "d mquotienda inversa m" y verá lo que quiero decir.

+2

Un backtick va hacia donde está un marcador. De esta manera: 'ma' al marcador en la posición del cursor, y' 'a' para desplazarse a él. – Yktula

+4

Usted dice to-ma-to, digo back-quote. :) – tzot

2
" ~/.vimrc 
" Turn on line numbering 
set nu 
" Turn on syntax highlighting 
syntax on  
" Set 4 space expanding tabs 
set tabstop=4 
set shiftwidth=4 
set softtabstop=4 
set expandtab 
"turn off line wrapping 
set nowrap 
" Map CTRL-N to create a new tab 
:map <C-n> <ESC>:tabnew<RETURN> 
" Map Tab and CTRL-Tab to move between tabs 
:map <Tab> <ESC>:tabn<RETURN> 
:map <C-Tab> <ESC>:tabp<RETURN> 
8

Estaba muy contento el día que aprendí sobre el uso de * o # para buscar, hacia abajo o hacia arriba, respectivamente, la palabra debajo del cursor. Asegúrese primero de :set incsearch y :set hlsearch.

2

Si está utilizando vim, el comando 'u' (en modo comando) Deshace el último comando que escribió. Puede usar este comando varias veces para deshacer los errores que haya cometido antes de guardar el archivo.

2

Consulte http://www.rayninfo.co.uk/vimtips.html para obtener una gran colección de consejos de Vim, desde el básico no se puede vivir sin hasta un material muy sofisticado que quizás nunca pensó en probar.

3

Aunque esta es una cuestión de preferencia personal, he descubierto que una de las cosas esenciales que hay que hacer es volver a asignar Esc a otra cosa.

Me resulta muy incómodo alcanzar la tecla Esc para salir del modo insertar, pero lo bonito de Vim es que permite la asignación de teclas.

Actualmente estoy usando el siguiente mapeo utilizando Control + S:

inoremap <C-s> <Esc>:w<CR> 

Esto tiene la ventaja de ser una asignación de teclas ya he comprometido a la memoria y tiene el valor añadido de ahorro de mi trabajo cada vez que voy al modo normal. Sí, sé que es una locura, pero estaría presionando el comando guardar con frecuencia de todos modos. Es como un mal hábito, ya sabes.

+0

ctrl- [es equivalente a Esc – hasen

+1

ctrl- [es incluso más difícil de alcanzar que Esc si no está usando un diseño de teclado estándar de EE. UU. (Mi caso). Pero la idea es que no esté restringido a Esc, como piensan muchos usuarios que no son Vim. Gracias por el comentario. –

1

Me gusta el Vim 5.6 Reference Guide, por Bram Moolenaar y Oleg Raisky.
Puede imprimirlo directamente en forma de folleto, fácil de leer, siempre lo tengo por ahí.
Es un poco viejo, pero ¿qué son 8 años en la vida de Vi?

+0

¿Qué otro software ha resistido las pruebas del tiempo mejor que vim? – ojblass

1
:set ignorecase smartcase 

hace que la búsqueda de mayúsculas y minúsculas, a menos que su búsqueda incluye una letra mayúscula. No es el más indispensable quizás, pero me encuentro configurando esta opción cada vez que estoy editando en un lugar nuevo. Está en cualquier archivo vimrc que tengo.

+0

No sabía nada de eso, ¡gracias! –

0

El poder real está en la búsqueda. Aquí están los comandos esenciales:

/Steve encontrará la primera instancia de "Steve" en el texto. n encontrará el siguiente "Steve" en el texto. :% s // Stephen/g reemplazará todas las instancias de "Steve" que acaba de buscar con "Stephen".

No promocionarme, pero escribí una publicación blog sobre este tema. Se enfoca en las partes críticas de Vim para un principiante.

1
:%!xxd 

Ver el contenido de un búfer en hexadecimal. Para volver:

:%!xxd -r 
0

Mis favoritos:

% find matching bracket/brace 
* and # next/previous match 
gg top of page 
G end of the page 
<Ctrl-v> Change to visual mode and select column 
<Ctrl-a> increase current number by 1 
<Ctrl-x> decrease current number by 1 
Running macros 
0

Nadie mencionó exuberantes ctags? Google e instalarlo; mucho mejor que los ctags predeterminados que probablemente tengas. Para usarlo, cd a la raíz de su proyecto y escriba

:! Ctags -R.

Crea una base de datos de todo en su proyecto ... java, C++, python, ruby, javascript, cualquier cosa, en un archivo llamado etiquetas.

: ctags de ayuda para una gran cantidad de comandos, demasiados para resumir, para usar las etiquetas generadas. Coloque el cursor sobre un nombre de función, escriba CMD], para abrir el archivo que lo define. Muchos más comandos así. Pronto se convierte en una segunda naturaleza ... casi tan agradable como un IDE (y VIM nunca te deja caer de la manera en que lo hacen los eclipses a menudo.

0

Hice mis primeros pasos usando The tutorial here, y he usado la hoja de referencia durante unas semanas. .., por supuesto, hay vimtutor en vim/gvim/MacVim

0

a veces es bueno volver a formatear una memoria intermedia (es decir, re-pestaña, alinear los frenos, etc) Hace poco aprendí un ahorro de tiempo para esto:

gg=G 

Por ejemplo ...se convertiría el siguiente:

if (!flag) 
{ 
    // Do something special 
    } 
else 
    { 
// Do another special thing 
} 

en lo siguiente:

if (!flag) 
{ 
    // Do something special 
} 
else 
{ 
    // Do another special thing 
} 

o si ha tenido un archivo XML que usted está esperando para volver a guión porque el formato es todo Screwy podría ejecutar la por encima de mando y convertir algo como lo siguiente:

<root> 
<addressBook> 
    <contact first="Frank" last="Tank"/> 
     <contact first="Foo" last="Man"/> 
    </addressBook> 
</root> 

en algo un poco más legible como la siguiente:

<root> 
    <addressBook> 
     <contact first="Frank" last="Tank"/> 
     <contact first="Foo" last="Man"/> 
    </addressBook> 
</root> 
0

Cambié de Textmate a VIM hace unos meses y escribí una guía sobre cómo hacer 110 comandos de edición de texto en VIM. Está organizado en categorías, como administración de archivos, autocompletado de palabras y resaltado de sintaxis.

Textmate to VIM

0

favor ver este sitio de una manera divertida de aprender el movimiento esencial comandos: http://kikuchiyo.org. Creo que la mayoría de los comandos esenciales están cubiertos en el hilo, pero siempre me gusta sugerir esto para los recién llegados a vim. haga clic en el primer enlace del tren, que tiene una leyenda para comandos de movimiento básicos y el comando de inserción i para recoger rubíes. Buenas prácticas para moverse rápidamente.

0

:g/<pattern>/t$

copiará <pattern> al final del archivo. Útil cuando quieres extraer líneas pero no quieres hacerlo una por una.

1

tengo unas pocas cosas en mi vimrc

set number 
set relativenumber 

Esto me da un sistema de numeración de líneas que hace j,k teclas realmente productivo.