ViTips
Tabla de Contenidos [-]
- 1 Links de interés
- 2 Activar coloreado de sintaxis
- 3 Completado de palabras
- 4 Búsquedas
- 5 Concatenar un archivo
- 6 Ir a
- 7 Ver números de línea
- 8 Ver caracteres especiales de control
- 9 Salir a la shell sin salir de la sesión de vi
- 10 Ejecutar un comando de shell desde vi
- 11 Reemplazar cadenas
- 12 Definir asociaciones de teclado
- 13 Convertir una línea a mayúsculas
- 14 Desactivar el auto-index al copiar texto
- 15 Cómo salvar una página de man para editarla en vi ?
- 16 Ejemplo de archivo .vimrc
Links de interés #
- Página de vim: http://www.vim.org/
- Documentación: http://www.vim.org/docs.php
- Tips de vim: http://www.vim.org/tips/index.php
- FAQ: http://vimdoc.sourceforge.net/vimfaq.html
- Cheat Sheet y tutorial: http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
- Reference card: http://tnerual.eriogerg.free.fr/vim.html
Activar coloreado de sintaxis #
En modo comando escribimos::syntax onSi queremos tener el coloreado de sintaxis de forma automática, deberíamos crear/editar un fichero .vimrc en nuestra $HOME y añadir en él la siguiente línea:
syntax enable
Completado de palabras #
Vim almacena las palabras tecleadas mientras escribimos. Durante la edición de un texto (modo insert) podemos completar una palabra mediante el comando:Ctrl + P o Ctrl + Ndonde P significa previous y N de next en la lista de palabras. Pulsando los comandos varias veces recorreremos la lista de posibles maneras de completar la palabra que estamos escribiendo. Se pueden definir un diccionarios personal en el .vimrc, por ejemplo, para acceder a diccionarios de palabras, funciones o textos frecuentes.
set dictionary=/usr/share/aspell/es.rws set complete=.,w,k
Búsquedas #
Para esto se utilizan los comandos / (hacia delante) o (hacia atrás) Búsqueda hacia delante del patrón "foo":/fooBúsqueda hacia atrás del patrón "foo":
?fooPara situarse en el siguiente elemento se pulsa la letra n y en el caso de situarse en el elemento anterior N (SHIFT-n)
Concatenar un archivo #
:r foo.txt
Ir a #
Ir al inicio del documento::1Ir al final del documento:
:$Ir a la línea 666:
:666
Ver números de línea #
:set number!
Ver caracteres especiales de control #
:set list
Salir a la shell sin salir de la sesión de vi #
:shellPara volver al fichero: <Crtl>-D
Ejecutar un comando de shell desde vi #
:! who -rTambién puedes concatenar un comando de shell:
:r! who -r
Reemplazar cadenas #
Muchas veces se quiere buscar y reemplazar una cadena de texto. Para esto se utiliza el comandoEn todos los ejemplos se sustituye foo por bar
Reemplazo en la línea actual (solo una vez)
:s/foo/bar/Reemplazo en la línea actual (las veces que ocurra en la línea)
:s/foo/bar/gReemplazo entre las líneas 12 y 25 (las veces que ocurra)
:12,25s/foo/bar/gReemplazo desde la línea 12 hasta el final (las veces que ocurra)
:12,$s/foo/bar/gSustituye el patrón de búsqueda por el de reemplazo en todo el fichero (las veces que ocurra)
:%s/foo/bar/gReemplaza solicitando confirmación.
:%s/foo/bar/gc
Definir asociaciones de teclado #
Los comandos más frecuentes de vi pueden definirse en el .vimrc mediante el comando map" Set keyboard mappings map <F1> :wq<CR> map <F2> :set number!<CR> map <F3> :set ff=dos<CR> map <F4> :set ff=unix<CR> map <F5> :<C-]><CR> map <F6> :<ESC><C-w><down> map <F7> :<ESC><C-w><up> map <F8> :<ESC>gqap<CR> map Q gq " Don't use Ex mode, use Q for for
Convertir una línea a mayúsculas #
En .vimrcmap <F9> :s/\([A-Z]\)\([A-Z][A-Z]*\)/\1\L\2/gEdita un documento y en una línea pulsa F9.
Desactivar el auto-index al copiar texto #
Muchas veces al editar archivos con el vi nos e intentar copiar desde otro fichero (boton del centro del ratón o ctrl+C ctrl+V) el motor del vi decide indentar el texto copiado.
public void metodo()
{
una linea
otra linea
otra linea más
}
cuando en realiadad el texto original era
public void metodo()
{
una linea
otra linea
otra linea más
}
Para evitar este comportamiento basta con utilizar el siguiete comando :set noautoindent o su expresión abreviada :set noai Otra forma de evitarlo en activar el modo paste antes de hacer la copia :set paste y desactivarlo después de realizar la copia :set nopaste
Cómo salvar una página de man para editarla en vi ? #
$ man ls | col -b > ls.txt
Ejemplo de archivo .vimrc #
"filetype plugin on " plugin on
"set mouse=a " mouse mode(gvim)
"set backup " keep a backup file
"colorscheme cesar " cesar colors
set nocompatible " vim settings
set dictionary=/usr/share/dict/words " set words dictionary
set complete=.,w,k " completion
set grepprg=grep\ -nH\ $* " grep command
set sw=2
set iskeyword+=:
set backspace=2 " allow backspacing over everything in insert mode
set laststatus=2 " show status line
set showmode " shows INSERT in the status line while in insertmode
set ruler " show the cursor position all the time
set showmatch " show matching parenthesis
set showcmd " show current uncompleted command
set history=100 " keep 100 lines of command line history
set noic " do not Ignore case on search
set noai " do not Ignore case on search
set incsearch " show immediately where the so far typed pattern matches
set virtualedit=all " tables
" Set keyboard mappings
map <F1> :wq<CR>
map <F2> :set number!<CR>
map <F3> :set ff=dos<CR>
map <F4> :set ff=unix<CR>
map <F5> :<C-]><CR>
map <F6> :<ESC><C-w><down>
map <F7> :<ESC><C-w><up>
map <F8> :<ESC>gqap<CR>
map Q gq " Don't use Ex mode, use Q for formatting
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
syntax on
set hlsearch
endif
" viminfo
set viminfo='10,\"100,:20,%,n~/.viminfo
au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
5397 Accesos