Comandos simples de Vim que desearías haber conocido antes [cerrado]

378

Estoy aprendiendo nuevos comandos en Vim todo el tiempo, pero estoy seguro de que todos aprenden algo nuevo de vez en cuando. Hace poco me enteré de esto:

zz, zt, zb : coloque el cursor en el medio, la parte superior o la parte inferior de la pantalla

¿Cuáles son otros comandos útiles o elegantes que desearía haber aprendido hace años?

Lin
fuente
46
técnicamente, zz, zt, zb están posicionando la pantalla con el cursor en el medio / arriba / abajo. para colocar el cursor en el medio / arriba / abajo use M, H o L. ¡Ambos conjuntos de comandos son útiles!
Peter
1
Leer esta publicación hace meses o un año desde entonces me ha ayudado todos los días. dap es algo que uso para mover párrafos varias veces por hora, gracias a esta publicación.
Funkodebat el
33
Nunca he recogido tantos trucos de una página que ha sido marcada como no constructiva :) Gracias a todos.
Tasos Bitsios

Respuestas:

315

Realmente desearía haber sabido que puede usar en CtrlClugar de Esccambiar del modo de inserción. Eso ha sido un verdadero impulso de productividad para mí.

yalestar
fuente
93
Mapeé mi Caps-Lock a un Esc. Eso es más fácil que el Esc normal y Ctrl-C
Kasper el
114
Santo cielo. 15 años de vi y nunca supe esto ...
Chris K
31
otro popular fue usar 'jj' para ESC. Me gusta este enfoque hasta ahora. :¡mapa! jj <ESC>
claytron
27
También puede usar CTRL- [(que me gusta porque son dos dedos pequeños ... solo una pequeña rotación de ambas manos).
Jason Down
42
use 'jk' como una variante en @ claytron's. si, sin saberlo, ya está en modo INSERT, jk lo deja donde estaba, para que pueda golpearlo siempre (crédito: alguien más ... no es mi idea).
Kyle
197

El truco "wow" más reciente que aprendí es un método de búsqueda y reemplazo complicado. Muy a menudo en el pasado, tuve una expresión regular realmente complicada para hacer sustituciones y no funcionó. Hay una mejor manera:

:set incsearch             " I have this in .vimrc
/my complicated regexp     " Highlighted as you enter characters
:%s//replace with this/    " You don't have to type it again

El "truco" aquí (por falta de una palabra mejor) es la forma en que puede usar la búsqueda para crear la expresión regular (y 'incsearch' lo resalta a medida que ingresa caracteres) y luego usa un patrón vacío en la sustitución: el vacío patrón predeterminado al último patrón de búsqueda.

Ejemplo:

/blue\(\d\+\)
:%s//red\1/

Equivalente a:

:%s/blue\(\d\+\)/red\1/

Ver:

:help 'incsearch'
:help :substitute
DrAl
fuente
1
wow ... he estado buscando algo como esto
figurassa
1
Sí, desearía haberlo sabido antes. Pero, de nuevo, eso es lo que digo sobre todo lo que aprendo que es nuevo en vim.
Robert Massaioli
26
Para cualquiera que realmente ame esto, intente presionar <Ctrl-R>/para insertar la última consulta de búsqueda. (Ver :help i_CTRL-R) Realmente útil para similares a los anteriores, pero desea capturar parte de los resultados de búsqueda. (como este: %s:/\\([fF]rank\\) and mary/marie and \1/g)
idbrii
44
:%s//...también funciona con *(palabra de búsqueda debajo del cursor). Un complemento llamado visual-star-search amplía la funcionalidad *para hacer coincidir todo el texto de una selección visual, lo que facilita la búsqueda y el reemplazo del texto seleccionado, por ejemplo v3e(seleccionar visualmente 3 palabras) *(buscar) y :%s//replacement/g(reemplazar todas las ocurrencias con " reemplazo"). Puedo usar esto tan a menudo que tengo una asignación para el comando global de sustitución: :nmap <Leader>s :%s///g<left><left>.
Patrick Oscity
1
@idbrii ya que la gente que lee puede ser Vim noobs (yo), %s:debería ser :%s, y para mi sistema, necesitaba en \(\)lugar de\\(\\)
Charlie Gorichanaz
155

Creé esta referencia de mi comando más utilizado para un amigo mío:

select                                   v
select row(s)                            SHIFT + v
select blocks (columns)                  CTRL  + v
indent selected text                     >
unindent selected text                   <
list buffers                             :ls
open buffer                              :bN (N = buffer number)
print                                    :hardcopy
open a file                              :e /path/to/file.txt
                                         :e C:\Path\To\File.txt
sort selected rows                       :sort
search for word under cursor             *
open file under cursor                   gf
  (absolute path or relative)
format selected code                     =
select contents of entire file           ggVG
convert selected text to uppercase       U
convert selected text to lowercase       u
invert case of selected text             ~
convert tabs to spaces                   :retab
start recording a macro                  qX (X = key to assign macro to)
stop recording a macro                   q
playback macro                           @X (X = key macro was assigned to)
replay previously played macro *         @@
auto-complete a word you are typing **   CTRL + n
bookmark current place in file           mX (X = key to assign bookmark to)
jump to bookmark                         `X (X = key bookmark was assigned to
                                             ` = back tick/tilde key)
show all bookmarks                       :marks
delete a bookmark                        :delm X (X = key bookmark to delete)
delete all bookmarks                     :delm!
split screen horizontally                :split
split screen vertically                  :vsplit
navigating split screens                 CTRL + w + j = move down a screen
                                         CTRL + w + k = move up a screen
                                         CTRL + w + h = move left a screen
                                         CTRL + w + l = move right a screen
close all other split screens            :only

*  - As with other commands in vi, you can playback a macro any number of times.
     The following command would playback the macro assigned to the key `w' 100
     times: 100@w

** - Vim uses words that exist in your current buffer and any other buffer you may have open for auto-complete suggestions.
brian newman
fuente
Enumeras "~ X" para ir a la marca con el nombre X. Eso no funciona para mí; en cambio, uso "'X" (comilla simple).
Guau. Tienes toda la razón. Cuando estaba escribiendo la guía, creo que mi ojo solo vio la tilde y pasó por alto la marca de la espalda. Actualizaré en consecuencia. Gracias por el aviso.
brian newman
55
esta lista es buena, pero realmente quiero saber cómo dibujaste esta tabla. con VIM? cual plugin Estoy buscando uno actualmente.
Kent
66
Usé VIM, pero ningún complemento. Sin embargo; El uso de la función Seleccionar bloque lo hizo relativamente fácil. ¡Me alegra que hayas encontrado útil la lista! ~ brian
brian newman
11
Ctrl-Q para la selección de bloques es una especificidad de mswin.vim que permite pegar CTRL-V. La mayoría de los usuarios de vim considerarían este mal y deshabilitarían mswin.vim. "+ P o Ctrl-R + no es tan difícil de escribir para insertar el contenido del portapapeles.
Benoit
144

gi cambia al modo de inserción, colocando el cursor en la misma ubicación que estaba anteriormente.

Cyber ​​Oliveira
fuente
29
Estaba tan feliz cuando descubrí que g;esto me
conmovió
@longdeqidao en absoluto. Regresa al último punto de inserción. Para que pueda desplazarse al contenido de su corazón y lo llevará de regreso a donde estaba insertando por última vez.
Cyber ​​Oliveira
99
FYI, g; (que @PatrickOscity mencionado anteriormente) coloca el cursor en el lugar donde se realizó una edición. Puede usarlo varias veces para retroceder en la historia. Tomando nota de esto aquí porque mi ayuda vim no menciona esto por alguna extraña razón.
PonyEars
13
La intuición de Vim nunca deja de impresionarme. Como @PonyEars mencionó g;que intenté si lo "opuesto" sería g,y he aquí, ¡podemos retroceder y avanzar!
Cyber ​​Oliveira
aEs más corto. :) Pero gies muy intuitivo, ya que ggeneralmente es una operación opuesta.
Erwin Rooijakkers
105
: q!

Ojalá supiera eso antes de comenzar vi por primera vez.

Peter Mortensen
fuente
23
Como emacs, ese es el comentario más divertido que he leído. Aunque no estoy seguro de que quisieras que fuera así. Me hiciste feliz hoy.
pjammer
29
Recuerdo haber probado vim y emacs por primera vez el mismo día, sin saber cómo salir. ¡¿Pensé para mí mismo qué demonios está mal con estas personas ?!
physicsmichael
13
+1. La primera vez que inicie vim, el mensaje predeterminado debería ser "escribir: q para salir". Hubiera ahorrado tanto tiempo lol
José Ramón
2
@ JoséRamón Pero sí lo muestra en la pantalla de forma predeterminada si ingresa vim sin abrir un archivo. ¿Se agregó esto recientemente? Recuerdo claramente haber intentado vim hace años y ya estaba allí. También le dice que use :q!si intenta salir sin guardar el búfer.
mechalynx
55
@ivy_lynx sí, puede que tengas razón, pero solo si abres vim sin archivos. Por lo general, la primera vez que abre vim es porque necesita editar un archivo de configuración en Unix, por lo que escribe "$ vim file" y no puede encontrar la salida. ¿O soy el único?
José Ramón
56

^ XF completa el uso de nombres de archivo del directorio actual. No más copiar / pegar desde la terminal o doble comprobación dolorosa.

^ XP completa usando palabras en el archivo actual

: set scrollbind obliga a un búfer a desplazarse junto a otro. por ejemplo, divide tu ventana en dos paneles verticales. Cargue un archivo en cada uno (quizás diferentes versiones del mismo archivo). Hacer :set scrollbinden cada uno. Ahora, cuando se desplaza en uno, ambos paneles se desplazarán juntos. Ideal para comparar archivos.

Brian Agnew
fuente
¿Cómo deshabilitar el scrollbind una vez que lo he habilitado?
Amjith el
2
jinxed_coder : :set noscbpara apagarlo y usar :set scbpara encenderlo (no :scrollbind). :h scrollbind
jmdeldin
Whoops Corregido por ': set scrollbind'.
Brian Agnew
77
^ XP completa con preferencia a las palabras anteriores en el archivo, ^ XN con preferencia a las siguientes palabras en el archivo.
u0b34a0f6ae
También puede diferenciar archivos abriendo file1 y ejecutando :diffsplit file2o simplemente iniciando vim con vim -d file1 file2. Vim enlaza automáticamente los dos archivos.
Brian McCutchon
51

Puede usar un conjunto completo de comandos para cambiar el texto entre corchetes / paréntesis / comillas / etiquetas. Es súper útil para evitar tener que encontrar el inicio y el final del grupo. Intente ci(, ci{, ci<, ci", ci', ctdependiendo de qué tipo de objeto desea cambiar. Y las ca(, ca{, ...variantes eliminan los corchetes / comillas también.

Fácil de recordar: cambie dentro de una declaración entre corchetes / cambie una declaración entre corchetes.

Peter
fuente
16
esto no es solo para c. Usted puede hacer esto con deliminar (por ejemplo, di (o da (), yal tirón, vpara seleccionar etc
Nathan Fellman
¡Hola! Me gustaría saber allí la documentación para esto está utilizando :help? No puedo encontrarlo por ninguna parte. > _ <
Matej
1
@Peter Los he revisado antes, pero no pude encontrar mención del comportamiento peculiar "delimitador + interno". Resulta estar adentro :help motion.txt! ¡Gracias!
Matej
2
este consejo es la única razón por la que cambié a vi en primer lugar :)
Justin L.
1
Si está editando HTML o XML, puede usarlo citpara cambiar el contenido de la etiqueta actual. Por ejemplo <span>Some text</span>, si su cursor está sobre la "m", puede hacer ditpara obtener <span></span>.
Jonathan Potter
47
  1. No presiones Escnunca. Vea esta respuesta para saber por qué . Como se mencionó anteriormente, Ctrl+ Ces una mejor alternativa. Sugiero mapear su Caps Lockclave para escapar.

  2. Si está editando un lenguaje compatible con Ctags , usar un archivo de etiquetas y :ta, Ctrl+ ], etc. es una excelente manera de navegar el código, incluso a través de múltiples archivos. Además, la finalización Ctrl+ Ny Ctrl+ Putilizando el archivo de etiquetas es una excelente manera de reducir las pulsaciones de teclas.

  3. Si está editando una línea que está ajustada porque es más ancha que su búfer, puede moverse hacia arriba / abajo usando gk y gj.

  4. Intente concentrarse en el uso efectivo de los comandos de movimiento antes de aprender malos hábitos. Cosas como usar 'dt' o 'd3w' en lugar de presionar xa muchas veces. Básicamente, cada vez que te encuentras presionando la misma tecla repetidamente, probablemente haya una forma mejor / más rápida / más concisa de lograr lo mismo.

anthony
fuente
11
¿No utilizas Escape? Eso es herejía. Escape es tu mejor amigo, tanto dentro como fuera del trabajo.
xcramps
28
si es tan buen amigo, ¿por qué está tan lejos en el teclado?
anthony
porque el 99% de la gente nunca lo usa.
Stefano Borini
55
Escape está separado de otras teclas por unas pocas pulgadas en mi teclado. No te lo puedes perder.
Brian Carper
15
# 3 es genial! Todavía estoy aprendiendo cosas nuevas ...
Brian Newman
45

La tecla de asterisco *, buscará la palabra debajo del cursor.

[+ Tablo llevará a la definición de una función C que está debajo de su cursor. (Sin embargo, no siempre funciona).

smcameron
fuente
1
Pruebe 'man ctags' si está usando * nix para aprender a generar un archivo de "etiquetas" que le dice a vim cómo encontrar la definición de cualquier función o variable en muchos idiomas además de C. Use ctrl +] para encontrar la definición del token debajo de su cursor, o use: tag tokenToFind para encontrar cualquier token que conozca. Incluso puede iniciar vim con "vim -t tokenToFind" para abrir el archivo apropiado y colocar el cursor en la función que necesita editar.
Adam Liss
23
la tecla # buscará en sentido inverso la palabra debajo del cursor
Funkodebat
github.com/bronson/vim-visual-star-search permite la búsqueda de estrellas para selecciones visuales. No quiero perderlo más.
Patrick Oscity
[ + Tab funcionará siempre cuando extienda las pathcarpetas requeridas comoset path+=path/to/files
dlmeetei
43

ZZ(funciona como :wq)

Y sobre la posición del cursor: descubrí que un cursor que siempre permanece en el medio de la pantalla es genial:

set scrolloff=9999
maykeye
fuente
2
No lo sabia. :xhace eso también
sa125
18
No del todo exacto. Funciona como :x, que solo guarda el archivo si hay cambios, mientras que :wqsiempre guarda el archivo.
Erik B
ZQ (funciona como: q!)
xialu
42

Algunas de mis últimas incorporaciones a mi tienda de cerebros Vim:

  • ^wi: Salta a la etiqueta debajo del cursor dividiendo la ventana.
  • cib/ciB: Cambia el texto dentro del conjunto actual de paréntesis () o llaves {}, respectivamente.
  • :set listchars=tab:>-,trail:_ list: Muestra pestañas / espacios finales visualmente diferentes de otros espacios. Ayuda mucho con la codificación de Python.
Walter
fuente
44
¡Esto necesita más votos! cibes genial.
Matt Parker
también: ciw para cambiar la palabra actual (o caw, la misma pero solo a la izquierda) ciW para cambiar la actual W = o. (rd) Sames con v en lugar de c seleccionará visualmente en lugar de reemplazarlo
lajarre
55
cib es equivalente a escribir "ci (". También puede hacer "ci [", "ci {" o (si su vimrc está configurado correctamente) "ci <", para otros tipos de paréntesis.
Tom Lord
2
Además, "cit" para cambiar el texto dentro de una etiqueta. Muy útil cuando se trabaja con XML / HTML.
Walter
También vale la pena mencionar que en su lugar puede sufrir un sufijo con la llave de cierre, si lo prefiere. Además, acabo de enterarme de ci}& cit- wow, esto va a ser muy útil. vi[m]¡está demostrando un programa muy emocionante!
underscore_d
37

gv inicia el modo visual y selecciona automáticamente lo que previamente había seleccionado.

demasiado php
fuente
34

: shell para iniciar una consola de shell desde Vim. Útil cuando, por ejemplo, desea probar un script sin salir de Vim. Simplemente presione ^ d cuando haya terminado con la consola de shell, y luego regrese a Vim y su archivo editado.

peroumal1
fuente
Supongo que :!shfue muy difícil. Yo prefiero que debido a que es más fácil de las líneas de comandos componer con registros / terminaciones de la memoria intermedia actual o por ejemplo, uso %/ %:hel nombre de archivo actual / nombredir etc.
sehe
1
Este es muy genial. Lo uso todos los días ... Antes de eso, era: wq, hacer cosas cli, volver a abrir vim con el mismo archivo ... Gran optimización
Flashin
77
Ctrl-Z para cambiar a shell y fg <ENTER> para volver a vim.
Mario G.
Ponga map <Esc>! :shell<CR>en su .vimrc, y puede iniciar el shell solo con Alt + !, o Alt + Shift + 1. (Mnemónico: se :!{cmd}ejecuta {cmd}con el caparazón.)
musiphil
:shellaunque comenzará un nuevo nivel de shell anidado. Mientras ctrl-zque no.
wisbucky
32

Esto siempre me anima:

:help 42
dogbane
fuente
31

vimcryption

vim -x filename.txt

Se le pedirá una frase de contraseña, editar y guardar. Ahora, cada vez que abra el archivo en vi nuevamente, deberá ingresar la contraseña para ver.

anteatersa
fuente
Sincronice esto con su Dropbox y obtendrá un administrador de contraseñas realmente agradable ;-)
Luis Nell
15
Pero tenga en cuenta que a menos que usted set cryptmethod=blowfish(solo disponible en 7.3+) use un algoritmo con una fuerza ridícula. Ver help encryptionpara más detalles.
AB
3
No utilice el cifrado vim, no es un buen cifrado y la peor seguridad es peor que ninguna. Más información: github.com/neovim/neovim/issues/694
rodrigoq
2
dgl.cx/2014/10/vim-blowfish meta-tldr: "corregido en Vim 7.4.399 [ groups.google.com/forum/#!msg/vim_dev/D8FyRd0EwlE/bkBOo-hzTzoJ] , por razones de compatibilidad con versiones anteriores que necesita para ser un nuevo método de cifrado, así que usa :set cm=blowfish2"
underscore_d
28

¡Construye y depura tu código desde Vim!

Configuración

No mucho realmente. Necesita un Makefileen el directorio actual.

Compilar

Mientras esté en Vim, escriba :makepara invocar un shell y construir su programa. No se preocupe cuando la salida se desplaza; solo presiona Entercuando haya terminado para volver a Vim.

La magia

De vuelta en Vim, tiene los siguientes comandos a su disposición:

  1. :cl enumera los errores, advertencias y otros mensajes.
  2. :ccmuestra el mensaje de error / advertencia actual en la parte inferior de la pantalla y salta a la línea ofensiva en su código.
  3. :cc nsalta al mensaje nth .
  4. :cn avanza al siguiente mensaje.
  5. :cp salta al mensaje anterior.

Hay mas; si está interesado, escriba :help :ccdesde Vim.

Adam Liss
fuente
1
funciona con más que solo compilar código. Es decir, cualquier tarea escrita en un archivo MAKE es de gran utilidad para esto.
Dwight Spencer
25

^ P y ^ N

Complete el texto anterior (^ P) o siguiente (^ N).

^ O y ^ I

Vaya a la ubicación anterior (^ O - "O" para la anterior) o a la siguiente (^ I - "I" cerca de "O").

Cuando realiza búsquedas, edita archivos, etc., puede navegar a través de estos "saltos" hacia adelante y hacia atrás.

Marcas

Presione ma (marca m, a - nombre de la marca). Más tarde para volver a la posición, escriba `a .

dimba
fuente
1
Wow, no sabía sobre ^ O y ^ I: eso es increíble. Puede valer la pena incluir :help jump-motionsetc. en su respuesta en caso de que alguien quiera más información.
DrAl
echa un vistazo a ShowMarks vim.org/scripts/script.php?script_id=152 . Le ayudará a recordar dónde y cuáles son todas sus marcas en un búfer. puede activar y desactivar la visualización con \ mt
tester
No entiendo la diferencia entre ^ P y ^ N ...
lajarre
@lajarre recorren la lista de terminaciones disponibles en la dirección opuesta
Patrick Oscity
2
A menudo uso ^ O ^ O cuando abro Vim después de notar que quiero editar el último archivo editado nuevamente. Enorme ahorro de tiempo!
Patrick Oscity
24

Presione %cuando el cursor esté sobre una cita, paréntesis, paréntesis o paréntesis para encontrar su coincidencia.

Adam Liss
fuente
20
Si el cursor no está sobre ninguno de ellos, se desplaza hacia la derecha hasta que golpea uno de ellos.
Cyber ​​Oliveira
@ Léo: ¡Gracias por el consejo extra!
Adam Liss
22

Hasta [personaje] ( t). Es útil para cualquier comando que acepte un rango. Mi favorito es ct;o ct)que elimina todo hasta el punto y coma final / paréntesis de cierre y luego lo coloca en modo de inserción.

Además, Gy ggson útiles (Ir abajo y arriba respectivamente).

MighMoS
fuente
el mejor aquí, aunque algunos de los otros también son útiles, ya los conocía a todos
Funkodebat
1
También en flugar de t, que [acción] subirá a través de ese personaje; por ejemplo, tener el cursor al comienzo de un argumento de función, df,lo eliminará (en los idiomas adecuados, por supuesto).
Actorclavilis
tyf son excelentes para editar parte de una variable camelCase. Por ejemplo, si acaba de duplicar una línea y necesita cambiar firstVariable a secondVariable, coloque el cursor al comienzo de firstVariable, luego ctV
Greg
1
T y F también funcionan, pero en la dirección opuesta.
Fede
20

^r^w pegar la palabra debajo del cursor en modo comando.

Es realmente útil cuando se utilizan comandos grep o replace.

Peter Mortensen
fuente
Si es la única palabra que desea, entonces * en modo normal buscará la palabra debajo del cursor.
idbrii
17

Escribir un número de línea seguido de ggte llevará a esa línea.

xastor
fuente
31
: Seguido por el número de línea hace lo mismo: 42 va al número de la línea 42
anti Veeranna
12
Escribir un número de línea seguido de G tiene el mismo efecto.
Cyber ​​Oliveira
3
<number>gova al <number>carácter th en el archivo.
Actorclavilis
17

Desearía haber conocido cosas básicas del modo de bloqueo visual antes. Incluso si no usa Vim para otra cosa, puede ser un gran ahorro de tiempo abrir un archivo en Vim solo para algunas operaciones de bloque. Estoy bastante seguro de que perdí un montón de tiempo haciendo este tipo de cosas manualmente.

Ejemplos que he encontrado particularmente útiles cuando, por ejemplo, refactoriza listas de nombres constantes simbólicos de manera consistente:

Ingrese al modo Visual Block ( Ctrl+ Qpara mí en Windows en lugar de Ctrl+ V)

Mueva el cursor para resaltar el bloque deseado.

Luego, I whatever texty presione Escpara insertar el texto delante del bloque en cada línea.

Use en Alugar de Itener el texto insertado después del bloque en cada línea.

Además, simplemente alternar el caso de una selección visual con ~puede ahorrar mucho tiempo.

Y simplemente eliminando columnas, también, por dsupuesto.

Anon
fuente
15

^ y copiará el carácter sobre el cursor.

innaM
fuente
66
... y ^ E insertará el carácter debajo del cursor
demasiado php
no funciona para mí, solo mueve un cursor al comienzo del texto
Alex
14

q <letter> - graba una macro.

y

@ <same-letter>: lo reproduce.

Estos son, con mucho, los comandos más útiles en Vim, ya que puede hacer que la computadora haga mucho trabajo por usted, y ni siquiera tiene que escribir un programa ni nada.

leeand00
fuente
El uso de qmaterias Simplifica, pero no está obligado a usar: simplemente guardar en un buffer con nombre del comando tampón "- por ejemplo, utilizando tampón a- "ad$...
Mei
@Mei qgraba una macro; las macros pueden contener comandos, no solo texto, por lo que "ad$es diferente de qa.
Brian McCutchon
@Sortofabeginner Eso es irrelevante aquí. El comando "ad $ pone el texto en el búfer ay qa lo ejecuta.
Mei
2
@Mei qano lo ejecuta; qalo registra y lo @aejecuta. Es cierto que puede escribir una macro en texto plano, almacenarla en un registro acon algo como "ad$, y luego ejecutarla @a, pero esto es bastante más trabajo. Hay una diferencia fundamental entre cortar y pegar y grabar y ejecutar.
Brian McCutchon
Doh! Lo sabía. Gracias por la corrección
Mei
13

Abrir múltiples archivos usando pestañas

:tabe filepath

Navegando entre archivos abiertos

gt and gT or :tabn and :tabp

Guarde la sesión abierta para que pueda volver a su lista de archivos abiertos más tarde

:mksession session_file_name.vim

Abrir una sesión creada

vim -S session_file_name.vim

Cierra todos los archivos a la vez

:qa

Otro comando que aprendí recientemente

autocmd

Le permite ejecutar un comando en un evento, por lo que podría, por ejemplo, ejecutar el comando make cuando guarde un archivo usando algo como:

:autocmd BufWritePost *.cpp :make
Mansuro
fuente
12

qx comenzará a grabar las pulsaciones de teclas. Puedes hacer casi cualquier tarea de edición y Vim lo recuerda. Presiona q nuevamente cuando hayas terminado, y presiona @x para reproducir tus pulsaciones de teclas. Esto es ideal para ediciones repetitivas que son demasiado complejas para escribir una asignación. Puede tener muchas grabaciones utilizando un carácter que no sea x .

demasiado php
fuente
55
También se comparte el mismo carácter 'x' entre el comando de macro de grabación 'q' y los portapapeles con nombre ("x ...). Puede dejar fragmentos de macros alrededor de su archivo y copiarlos en un portapapeles con nombre (por ejemplo," xyy ) y luego reproducirlos (@x).
Cyber ​​Oliveira
Y si crea la macro awesomist, puede pasar ese portapapeles en su _vimrc con un 'let @x = ""' (colocando la macro en el "") y guardarlo para siempre.
Kearns
11

Debo decir que uno de mis favoritos es poner la ventana de ayuda en una nueva pestaña:

:tab help <help_topic>

Esto abre la ayuda en una nueva pestaña y, como alguien que ama las pestañas de Vim, esto es ridículamente útil.

Robert Massaioli
fuente
2
Los tampones son las pestañas de vim. Están mejor soportados por el flujo de trabajo vim. Sospecho que las pestañas solo se agregaron a vim porque demasiadas personas no entendían los buffers.
still_dreaming_1
Ok, muy pronto después de decir eso, encontré un uso para las pestañas en vim. Es cierto que si está utilizando un búfer por pestaña, debe aprender sobre los búferes. No es así como se pensaba que las pestañas se usaran en vim. La mayoría de los usuarios avanzados de vim usan buffers de la misma manera que las pestañas se usan en la mayoría de los programas. Muchas personas piensan que las pestañas deberían haberse nombrado diseños en vim. Son principalmente para tener diferentes colecciones de ventanas abiertas en diferentes pestañas. También podría tener un búfer específico al que volverá a abrir mucho en una pestaña y usar la otra pestaña para ver todos los demás búferes.
still_dreaming_1
9

cw

Cambiar palabra: elimina la palabra debajo del cursor y lo pone en modo de inserción para escribir una nueva. Por supuesto, esto funciona con otras teclas de movimiento, por lo que puede hacer cosas como c $ para cambiar al final de la línea.

carácter f +

Encuentra la siguiente aparición del personaje en la línea actual. Entonces puede hacer vft para seleccionar todo el texto hasta la próxima "t" en la línea actual. Es otra tecla de movimiento, por lo que también funciona con otros comandos.

Adam Neal
fuente
9

:b [any portion of a buffer name]para cambiar buffers. Entonces, si tiene dos buffers, "somefile1.txt" y "someotherfile2.txt", puede cambiar al segundo simplemente ":b 2.t<enter>". También admite la finalización de pestañas, aunque no es obligatorio.

Hablando de completar pestañas, la configuración :set wildmode=full wildmenutambién es muy útil. Permite completar la pestaña completa para el modo de comando, así como un menú de estilo ncurses muy útil de todas las coincidencias posibles al usarlo.

Michael
fuente
9

:% s, / buscar, / reemplazar,

Puede usar otros caracteres que no sean /(barra inclinada) para separar patrones para la sustitución. De esta manera, no tiene que escapar de las barras de las rutas de archivo.

hfs
fuente
2
oh diablos si. Sabía que sedtenía esto, pero no vim. Cuanto más sabes ♒ ☆
beerbajay