Spanish (Español) translation by Esther (you can also view the original English article)
Admítelo: cada vez que ves a una persona usando Vim, consideras la posibilidad de que sepa algo que tú no sabes. ¿Por qué si no iban a utilizar un editor que, en tu opinión, es una basura de código abierto y anticuada? Piensa lo que quieras, pero hay una razón por la que los mejores desarrolladores confían en Vim.
Cada pocas semanas, revisamos algunas de las publicaciones favoritas de nuestros lectores a lo largo de la historia del sitio. Este tutorial se publicó por primera vez en febrero de 2011.
Hasta que no hayas pasado al menos un mes trabajando todos los días con el editor, sin duda lo odiarás. Por eso, la mayoría de los recién llegados juegan con Vim durante un día, se asquean y no vuelven a tocarlo. Lo lamentable es que, si estos desarrolladores pudieran superar los escollos, se introducirían en una velocidad y flexibilidad increíbles.
1. Hay demasiados modos
Es cierto: Vim no es un editor de código estándar (es mejor). La transición de, por ejemplo, TextMate a Vim va a ser un proceso totalmente diferente al de cambiar de TextMate a Espresso. Tenlo siempre presente cuando te encuentres rasgándote las vestiduras porque Vim parece negarse a introducir texto cuando escribes.
Aunque hay múltiples modos en Vim, nos centraremos en los tres más importantes. Pero antes de continuar, ten en cuenta que cada tecla cumple una función diferente, dependiendo del modo en el que te encuentres. Más confuso aún, al principio, una letra mayúscula desencadena una acción diferente que una minúscula.
En el modo de comandos, al pulsar la "i" minúscula se activará el "modo de inserción". Sin embargo, una "I" mayúscula moverá el cursor al principio de la línea. ¡Esto puede parecer confuso, pero te proporciona un poder increíble!
- Command: Por defecto, Vim debería descansar en modo comando. Piensa en este modo como el modo de "moverse". Mientras que, en un editor tradicional, puedes estar acostumbrado a utilizar el ratón o las teclas de dirección para recorrer tu documento, el modo de comandos de Vim hace que el proceso sea más rápido y "sin ratón".
- Insert: Al pulsar la "i" minúscula en el modo de comandos, pasará al "Modo de inserción". Los recién llegados a Vim encontrarán este modo familiar. Como resultado, sin embargo, a menudo permanecen en este modo mucho más tiempo del que deberían (sé que yo lo hice). Como regla general, el modo de inserción debe utilizarse únicamente para insertar texto. Cuando termines, vuelve inmediatamente al modo comando.
- Visual: Piensa en el modo visual como un modo de "selección". ¿Necesitas seleccionar las siguientes cinco líneas y borrarlas? Con un editor de código normal, podrías utilizar el ratón para seleccionar visualmente cinco líneas y, a continuación, pulsar la tecla de retroceso. Con Vim, en cambio, pulsarías la
V
mayúscula para cambiar al modo Visual, y luego escribirías5j
para seleccionar cinco líneas más abajo. Por último, pulsarías lad
, de borrar.
Sé que esto suena increíblemente confuso al principio. Puede que pienses: "¿Todo ese trabajo solo para borrar cinco líneas?". Pero la verdad es que este método es significativamente más rápido.
2. Editor antiguo
¿Por qué se le da la espalda a más de tres décadas de desarrollo?
Puede que oigas a tus amigos decir: "¿No es Vim un editor de código antiguo?". Bueno, se podría decir que sí; lleva más de treinta años en el mercado. Aunque, honestamente, ¿por qué ibas a rechazar más de tres décadas de desarrollo? ¡Eso es más tiempo del que yo he vivido! Mejor aún, hasta el día de hoy, Vim está en desarrollo activo. La versión más reciente, la 7.3, estuvo disponible en agosto de 2010.
En segundo lugar, es importante tener en cuenta que Vim no es Vi. Si tu única experiencia es con este último, tómate un tiempo para descargar la última versión y jugar con las nuevas características. ¡Te sorprenderás gratamente!
3. I Love TextMate Snippets
Si Vim no puede hacerlo de forma nativa, puedes apostar que hay un plugin disponible en alguna parte.
Rápidamente te darás cuenta de que, si Vim no puede realizar una tarea concreta, es probable que se haya desarrollado un plugin para proporcionar esa funcionalidad. Por ejemplo, considera la excelente función de fragmentos de TextMate. Aunque Vim no lo soporta de forma nativa, puedes descargar el plugin snipMate, que debería hacer la experiencia prácticamente idéntica a la que estás acostumbrado.
Más información sobre el cambio a Vim desde TextMate
- Guía de inicio de Vim desde TextMate
- De TextMate a Vim para los programadores de Rails
- Todos los que intentaron convencerme de que usara Vim estaban equivocados
4. No puedo usar las teclas de flecha
Cuanto menos movimiento, mejor.
En primer lugar, esto no es cierto. Podría ser el caso con Vi, pero eres libre de usar cómo Vim de la manera que te resulte más cómoda. Así que utiliza las teclas de flecha a tu antojo, aunque ten en cuenta que hay una razón por la que la mayoría de los usuarios de Vim no lo hacen.
Las teclas h,j,k,l
que corresponden a la izquierda, abajo, arriba y derecha, respectivamente, tienen dos propósitos:
- No hay elección: En su día, las máquinas no tenían esas útiles teclas de dirección. Por ello, no tenían más remedio que elegir la mejor alternativa.
- Menos movimiento: Si tus manos generalmente descansan a lo largo de la segunda fila del teclado, no tiene mucho sentido mover repetidamente la mano hacia la parte inferior derecha del teclado cada vez que quieras mover el cursor. Cuanto menos movimiento, mejor. Con esta disposición, puedes recorrer tus documentos sin moverte ni un centímetro.
Al fin y al cabo, tú eres la persona que utiliza el editor. Si, al principio, te sientes más cómodo utilizando las teclas de dirección, ¡entonces hazlo!
5. Soy un diseñador, amigo
No pasa nada. Vim no es para todo el mundo. Como persona que al menos intenta hacer trabajos de diseño de vez en cuando, puedo dar fe de que Vim puede no ser lo más adecuado para los diseñadores.
Los desarrolladores no son diseñadores; es natural que este hecho se refleje en su elección de editores.
Si crees que la mayor parte de tus días los pasas trabajando con HTML y CSS, entonces tal vez Vim no sea para ti. Ahora bien, eso no quiere decir que no debas darle una oportunidad; pero es ciertamente comprensible, si decides quedarte con un editor más amigable para el diseñador, como Coda.
6. Vim no ofrece nada que mi actual editor no haga ya
Simple y llanamente, eso es una tontería. Ciertamente, cada editor tiene sus puntos fuertes, pero verás que Vim es increíblemente potente y, sobre todo, flexible. Hay cientos y cientos de plugins disponibles (de forma gratuita) que te proporcionarán soporte para prácticamente cualquier tipo de funcionalidad que necesites.
Muchos recién llegados suelen citar el comando incorporado "Cambiar interior" como un gran punto de venta. Para mí lo fue. Digamos que tienes el siguiente trozo de código:
var joe = 'plumber';
Suponiendo que el cursor está al principio de esa línea, y que desea cambiar el valor "fontanero" por "negro", tradicionalmente, podría utilizar las teclas de flecha o el ratón para seleccionar y cambiar el texto. Con Vim, el proceso se simplifica enormemente. Simplemente escriba: ci'
. Esto significa "Cambiar las comillas interiores", o, encontrar el siguiente conjunto de comillas simples, y cambiar el valor dentro.
Plugins de primera clase
- snipMate: Te permite, por ejemplo, escribir + tabulador, y tener un elemento div completo expandido. Es tremendamente útil.
- Sorround: Envolver partes del texto con paréntesis, etiquetas, llaves, etc.
- NerdTree: Explora tu sistema de archivos y para abrir archivos y directorios. Te presenta el sistema de archivos en forma de árbol que manipulas con el teclado y/o el ratón. También le permite realizar operaciones simples del sistema de archivos.
- TComment: Comenta fácil y rápidamente ciertas líneas de tu código.
- Sparkup: Similar a ZenCoding, pero proporciona más soporte para aplicar valores a los elementos también, como:
ul > li { Mi texto del elemento de la lista. }
.
7. Mi archivo Vimrc está en blanco
Esta fue una queja inicial que tuve con Vim, también. Cuando se lanza por primera vez, digamos, MacVim, ¡se le arroja a la manada de lobos! No hay resaltado de código, no hay formato, no hay sangría inteligente... ¡no hay nada! Particularmente si estás usando un editor Vim personalizado, debería haber al menos un archivo vimrc base para empezar. Puede ser una experiencia intimidante tratar de averiguar cómo aplicar sus preferencias personalizadas.
Para aquellos que no están familiarizados con un archivo vimrc, es esencialmente un archivo que le permite especificar sus preferencias de editor.
Utiliza esto como un inicio (haz clic en el botón Expandir más abajo):
" .vimrc File " Maintained by: Jeffrey Way " jeffrey@jeffrey-way.com " http://net.tutsplus.com " "Forget compatibility with Vi. Who cares. set nocompatible "Enable filetypes filetype on filetype plugin on filetype indent on syntax on "Write the old file out when switching between files. set autowrite "Display current cursor position in lower right corner. set ruler "Want a different map leader than \ "set mapleader = ","; "Ever notice a slight lag after typing the leader key + command? This lowers "the timeout. set timeoutlen=500 "Switch between buffers without saving set hidden "Set the color scheme. Change this to your preference. "Here's 100 to choose from: http://www.vim.org/scripts/script.php?script_id=625 colorscheme twilight "Set font type and size. Depends on the resolution. Larger screens, prefer h20 set guifont=Menlo:h14 "Tab stuff set tabstop=3 set shiftwidth=3 set softtabstop=3 set expandtab "Show command in bottom right portion of the screen set showcmd "Show lines numbers set number "Prefer relative line numbering? "set relativenumber" "Indent stuff set smartindent set autoindent "Always show the status line set laststatus=2 "Prefer a slightly higher line height set linespace=3 "Better line wrapping set wrap set textwidth=79 set formatoptions=qrn1 "Set incremental searching" set incsearch "Highlight searching set hlsearch " case insensitive search set ignorecase set smartcase "Hide MacVim toolbar by default set go-=T "Hard-wrap paragraphs of text nnoremap <leader>q gqip "Enable code folding set foldenable "Hide mouse when typing set mousehide "Shortcut to fold tags with leader (usually \) + ft nnoremap <leader>ft Vatzf " Create dictionary for custom expansions set dictionary+=/Users/jeff_way/.vim/dict.txt "Opens a vertical split and switches over (\v) nnoremap <leader>v <C-w>v<C-w>l "Split windows below the current window. set splitbelow " session settings set sessionoptions=resize,winpos,winsize,buffers,tabpages,folds,curdir,help "Set up an HTML5 template for all new .html files "autocmd BufNewFile * silent! 0r $VIMHOME/templates/%:e.tpl "Load the current buffer in Firefox - Mac specific. abbrev ff :! open -a firefox.app %:p<cr> "Map a change directory to the desktop - Mac specific nmap <leader>d :cd ~/Desktop<cr>:e.<cr> "Shortcut for editing vimrc file in a new tab nmap <leader>ev :tabedit $MYVIMRC<cr> "Change zen coding plugin expansion key to shift + e let g:user_zen_expandabbr_key = '<C-e>' "Faster shortcut for commenting. Requires T-Comment plugin map <leader>c <c-_><c-_> "Saves time; maps the spacebar to colon nmap <space> : "Automatically change current directory to that of the file in the buffer autocmd BufEnter * cd %:p:h "Map code completion to , + tab imap <leader><tab> <C-x><C-o> " More useful command-line completion set wildmenu "Auto-completion menu set wildmode=list:longest "http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE set completeopt=longest,menuone inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" inoremap <expr> <C-n> pumvisible() ? '<C-n>' : \ '<C-n><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>' inoremap <expr> <M-,> pumvisible() ? '<C-n>' : \ '<C-x><C-o><C-n><C-p><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>' "Map escape key to jj -- much faster imap jj <esc> "Delete all buffers (via Derek Wyatt) nmap <silent> ,da :exec "1," . bufnr('$') . "bd"<cr> "Bubble single lines (kicks butt) "http://vimcasts.org/episodes/bubbling-text/ nmap <C-Up> ddkP nmap <C-Down> ddp "Bubble multiple lines vmap <C-Up> xkP`[V`] vmap <C-Down> xp`[V`] " Source the vimrc file after saving it. This way, you don't have to reload Vim to see the changes. if has("autocmd") augroup myvimrchooks au! autocmd bufwritepost .vimrc source ~/.vimrc augroup END endif " easier window navigation nmap <C-h> <C-w>h nmap <C-j> <C-w>j nmap <C-k> <C-w>k nmap <C-l> <C-w>l "------------------------" "NERDTREE PLUGIN SETTINGS "------------------------" "Shortcut for NERDTreeToggle nmap <leader>nt :NERDTreeToggle <CR> "Show hidden files in NerdTree let NERDTreeShowHidden=1 "autopen NERDTree and focus cursor in new document autocmd VimEnter * NERDTree autocmd VimEnter * wincmd p "Helpeful abbreviations iab lorem Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. iab llorem Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. "Spelling corrects. Just for example. Add yours below. iab teh the iab Teh The " Get to home dir easier " <leader>hm is easier to type than :cd ~ nmap <leader>hm :cd ~/ <CR> " Alphabetically sort CSS properties in file with :SortCSS :command! SortCSS :g#\({\n\)\@<=#.,/}/sort " Shortcut to opening a virtual split to right of current pane " Makes more sense than opening to the left nmap <leader>bv :bel vsp " Saves file when Vim window loses focus au FocusLost * :wa " Backups set backupdir=~/.vim/tmp/backup// " backups set directory=~/.vim/tmp/swap// " swap files set backup " enable backup " No more stretching for navigating files "noremap h ; "noremap j h "noremap k gj "noremap l gk "noremap ; l set showmatch " show matching brackets " print empty <a> tag map! ;h <a href=""></a><ESC>5hi
8. No quiero usar la terminal
Yo tampoco, al menos no más de lo que tengo, hay una variedad de editores Vim dedicados que proporcionan una experiencia más parecida a la de Windows/Mac GUI.
Estos editores ofrecen soporte para el tipo de pulsaciones de teclas que están arraigadas en tu cuerpo, como "Command + F
" para buscar, o "Command + W
" para cerrar la ventana actual.
¿Recuerdas que en la escuela, a veces, el alumno que se sentaba a tu lado era capaz de explicarte y ayudarte a entender algún concepto difícil más que el profesor? La razón es que, una vez que dominas un oficio, es difícil recordar lo que personalmente te dio más problemas. De septiembre a octubre, me embarqué en un desafío de cuatro semanas, que llamo "Aventurarse en Vim". Después de escuchar a innumerables desarrolladores de gran talento alabar este editor de código que parece tener una década de antigüedad, decidí que merecía la pena dedicar un mes de mi tiempo a averiguar por qué tanta gente considera que Vim es el mejor editor del planeta.
10. No puedo editar archivos en mi servidor
Por supuesto que puedes, aunque hay que admitir que no es tan fácil de usar como, por ejemplo, la función de servidor remoto de Coda. Hablando de Panic, si eres un usuario de Transmit, podrías considerar instalar el plugin FTP de Transmit.
"Este script permite subir el archivo actual vía Transmit directamente desde Vim. Para que funcione, necesitas estar trabajando en un archivo que esté vinculado a una conexión de Transmit, y esta conexión debe tener activado "DockSend"."
Con este plugin, cuando se edita un archivo que tiene una conexión Transmit (archivo abierto a través de Transmit), solo tienes que pulsar Control + U
para empujar esas actualizaciones a tu servidor remoto. ¡Es un juego de niños!
Sin embargo, la verdad es que deberías intentar adoptar un mejor proceso de build/deployment. De esta manera, en lugar de usar FTP, puedes simplemente hacer git push
.
Claro, hay un puñado de razones para no usar Vim. Tiene una curva de aprendizaje empinada, y requiere un replanteamiento completo de cómo debe funcionar un editor de código. Dicho esto, hay cientos de razones por las que deberías usar Vim. La única pregunta es: ¿por qué no lo haces?