vim
Consejos y trucos para aumentar la productividad.
Buscar..
Sintaxis
- : set relativenumber
- : establecer número
- : set nonumber /: set nonu
- : pwd
Observaciones
Esta recarga automática solo ocurrirá si edita su vimrc
en una versión completa de vim que admita autocmd
.
Macros rápidos "desechables"
Añade esto a tu vimrc:
nnoremap Q @q
Para comenzar a grabar la macro "desechable", use qq
. Para finalizar la grabación pulsa q
(en modo normal para ambos).
Para ejecutar la macro grabada, use Q
Esto es útil para las macros que necesita repetir muchas veces seguidas, pero que probablemente no se volverán a utilizar después.
Usando la función de finalización de ruta dentro de Vim
Esto es muy común, memoriza una ruta a un archivo o carpeta, abre Vim y trata de escribir lo que acaba de memorizar, pero no está 100% seguro de que sea correcto, así que cierra el editor y comienza de nuevo.
Cuando desea la función de finalización de ruta, tiene un archivo /home/ubuntu/my_folder/my_file
y está editando otro archivo que hace referencia a la ruta de la anterior:
Ingrese al modo insertar: inserte o hágalo de la manera que desee. A continuación, escribe /h
. Cuando el cursor está debajo de h
, presione Ctrl x y luego Ctrl f para que el editor lo complete en /home/
porque el patrón /h
es único
Ahora, suponga que tiene dos carpetas dentro de /home/ubuntu/
llamado my_folder_1
my_folder_2
y quieres la ruta /home/ubuntu/my_folder_2
como siempre:
Entrar en modo de inserción
escribe /h
presiona Ctrl x y luego Ctrl f . Ahora tiene /home/
Next add u después de / home / y presione Ctrl x y luego Ctrl f . Ahora tienes /home/ubuntu/
porque esa ruta es única. Ahora, escriba my
after /home/ubuntu/
y presione Ctrl x y luego Ctrl f . El editor completará su palabra hasta my_folder_
y verá el árbol de directorios, así que use las teclas de flecha para elegir la que desee.
Activar números de línea relativos
Para eliminar algunas líneas de texto cuando no conoce el número exacto de líneas a eliminar, pruebe con 10dd
, 5dd
, 3dd
hasta que elimine todas las líneas.
Los números de línea relativos resuelven este problema, supongamos que tenemos un archivo que contiene:
sometimes, you see a block of
text. You want to remove
it but you
cannot directly get the
exact number of
lines to delete
so you try
10d , 5d
3d until
you
remove all the block.
Entra en modo NORMAL: Esc
Ahora, ejecute :set relativenumber
. Una vez hecho esto, el archivo se mostrará como:
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 0 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
donde 0
es el número de línea de la línea actual y también muestra el número de línea real delante del número relativo, por lo que ahora no tiene que estimar los números de líneas de la línea actual para cortar o eliminar o, peor aún, contarlos uno por uno.
Ahora puede ejecutar su comando habitual como 6dd
y está seguro del número de líneas.
También puede usar la forma abreviada del mismo comando :set rnu
para activar los números relativos y :set nornu
para desactivar la misma.
Si también :set number
o tiene :set number
ya :set number
, obtendrá el número de línea de la línea en la que se encuentra el cursor.
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 4 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
Visualización de números de línea
Para ver los números de línea desde la vista predeterminada ingrese
:set number
Para ocultar números de línea
:set nonumber
También hay un atajo para arriba. nu
es igual que el number
.
:set nonu
Para ocultar números de línea, también podemos usar
:set nu!
Mapeos para salir del modo Insertar
Muchos usuarios de Vim encuentran que la Esc es demasiado difícil de alcanzar y terminan encontrando otro mapeo al que es fácil acceder desde la fila de casa. Tenga en cuenta que Ctrl - [ puede ser equivalente a Esc en un teclado inglés, y es mucho más fácil de alcanzar.
j k
inoremap jk <ESC>
Este es realmente fácil de activar; solo aplasta tus dos primeros dedos en la fila de casa al mismo tiempo. También es difícil de activar accidentalmente ya que "jk" nunca aparece en ninguna palabra en inglés, y si estás en modo normal no hace nada. Si no escribe demasiado "blackjack", considere agregar también inoremap kj <ESC>
para no tener que preocuparse por el tiempo de las dos teclas.
Bloq Mayús
Linux
En Linux, puedes usar xmodmap
para hacer que Caps Lock haga lo mismo que Esc . Pon esto en un archivo:
!! No clear Lock
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape
A continuación, ejecute el xmodmap file
. Esto remapsula Caps Lock a Esc .
Windows
En Windows puedes usar SharpKey o AutoHotkey .
Mac OS
Si tiene macOS 10.12.1 o posterior, puede volver a asignar Caps Lock to Escape usando las Preferencias del sistema. Seleccione Teclado, vaya a la pestaña Teclado y haga clic en Teclas modificadoras.
Cómo saber el directorio y / o la ruta del archivo que está editando
Para conocer la ruta del directorio en el que se encuentra su archivo, puede utilizar:
Esc para entrar en modo de comando
:pwd
Esto imprimirá la ruta al directorio en la parte inferior del editor, como esto
I'm a ninja
~
~
~
~
~
/home/ubuntu/myfolder 1,5 All
Ahora, si desea saber el nombre del archivo que está editando en relación con el directorio de trabajo de vim, puede usar:
Esc para entrar en modo de comando CTRL G
I'm a ninja
~
~
~
~
~
"myfile"[Modified][New file] 1 line --100%-- 1,5 All
Finalmente, para obtener la ruta absoluta al archivo que está editando, use
Esc para entrar en modo de comando,
1 y luego CTRL G
I'm a ninja
~
~
~
~
~
"~/myfolder/myfile"[Modified][New file] 1 line --100%-- 1,5 All
Buscar dentro de un bloque de función
Para buscar texto foo
dentro de un {}
bloque que rodea el cursor use el siguiente comando ( <ESC>
- tecla de escape, <CR>
- tecla enter):
vi{<ESC>/\%Vfoo<CR>
ahora puedes saltar entre las coincidencias dentro del bloque presionando n
p
. Si tiene la opción hlsearch
habilitada, esto resaltará todas las coincidencias. \%V
es una parte especial del patrón de búsqueda, que le dice a vim que busque solo en el área seleccionada visualmente. También puedes hacer un mapeo como este:
:vnoremap g/ <ESC>/\%V
Después de esto, el comando anterior se reduce a lo siguiente:
vi{g/foo<CR>
Otro truco útil es imprimir todas las líneas que contienen el patrón:
vi{
:'<,'>g/foo/#
El rango '<,'>
se inserta automáticamente.
Ver :help range
y :help :g
.
Copiar, mover o eliminar la línea encontrada.
Muchos usuarios se encuentran en una situación en la que solo quieren copiar, mover o eliminar una línea rápidamente y regresar a donde estaban.
Por lo general, si desea mover una línea que contiene la palabra lot
debajo de la línea actual, escriba algo como:
/lot<Esc>dd<C-o>p
Pero para aumentar la productividad, puede utilizar este acceso directo en estos casos:
" It's recommended to turn on incremental search when doing so
set incsearch
" copy the found line
cnoremap $t <CR>:t''<CR>
" move the found line
cnoremap $m <CR>:m''<CR>
" delete the found line
cnoremap $d <CR>:d<CR>``
Así que una búsqueda como esta:
/lot$m
movería la línea que contiene el lot
debajo de la línea en la que estaba su cursor cuando comenzó la búsqueda.
Escribe un archivo si te olvidas de `sudo` antes de iniciar vim
Este comando guardará el archivo abierto con derechos sudo
:w !sudo tee % >/dev/null
También puedes mapear w!!
escribir un archivo como root
:cnoremap w!! w !sudo tee % >/dev/null
Recargar automáticamente vimrc al guardar
Para volver a cargar vimrc
automáticamente al guardar, agregue lo siguiente a su vimrc
:
if has('autocmd') " ignore this section if your vim does not support autocommands
augroup reload_vimrc
autocmd!
autocmd! BufWritePost $MYVIMRC,$MYGVIMRC nested source %
augroup END
endif
y luego, por última vez, escriba:
:so $MYVIMRC
La próxima vez que guarde su vimrc
, se volverá a cargar automáticamente.
nested
es útil si está utilizando vim-airline. El proceso de carga de la aerolínea desencadena algunos autocomandos, pero ya que estás en el proceso de ejecutar un autocomando se omiten. nested
permite activar autocomandos anidados y permite que la línea aérea se cargue correctamente.
Completar la línea de comando
configura wildmenu
para activar las sugerencias de finalización para la línea de comando.
Ejecuta lo siguiente
set wildmenu
set wildmode=list:longest,full
Ahora si dices, pestaña :color
,
Obtendrás
256-jungle Benokai BlackSea C64 CandyPaper Chasing_Logic ChocolateLiquor :color 0x7A69_dark