8

Personalizar VIM e instalar el plugin de Go

Osmandi
osmandi
45024

Hola, me llamo Osmandi y hoy te enseñaré a cómo personalizar VIM y programar con Go.

vim-configuration.png

Sí, así como lo vez en la imagen 😉 Por cierto esas son mis notas del Curso de Algoritmos con C 😋 Recomiendo mucho ese curso.

Nota Yo uso ArchLinux, si usas otra distribución o sistema comparte en la caja de comentarios si tuviste que realizar algún ajuste.

Contenido:


  • ¿Qué es VIM y Go?
  • Instalación de VIM
  • Comandos básicos de VIM
  • Personalización de VIM
  • Plugin de VIM para usar Go

¿Qué es VIM y Go?


  • VIM: La primera versión es de 1991, la mayoría de los usuarios de Linux lo tenemos instalado porque nos brinda ciertas posibilidades que otros editores no, como por ejemplo el acceder al bash sin salir del programa. Admito que es un poco complicado al principio, pero una vez lo dominas te gustará mucho.

En la ArchWiki encontré esta definición:

Vim (Vi IMProved), es un editor de texto derivado de Vi. Es notoriamente conocido por su empinada curva de aprendizaje, y su poco amistosa interfaz de usuario. No obstante, debido a su eficiencia, variedad de añadidos (“plugins”) y posibilidades de personalización, vim es uno de los editores de texto más populares entre programadores y usuarios de sistemas tipo Unix (junto con Emacs*). Existe también una versión gráfica, gVim, que proporciona un sistema de menús al usuario.

  • Go: Es un lenguaje de programación creado por Google inspirado en C pero no es orientado a objeto sino orientado a eventos al igual que C. Su sintaxis bastante amigable pero lo que más destaca es su potencia 😄. No solo es usado para BackEnd también para programas como Docker y Machine Learning.
<h1>Instalación de VIM</h1>

En este tutorial trabajaré solo con la versión de terminal, es decir VIM. En ArchLinux es bastante sencillo, solo basta con ingresar en la terminal:

sudo pacman -S vim

Si ingresamos vim en nuestra terminal deberían entrar con normalidad al programa.

Comandos básicos de VIM


Como ya lo habrás notado, VIM es completamente por terminal y en ese sentido se maneja todo por comandos y teclas. Aquí en ningún momento usarás el mouse.

Si piensas que eso es una desventaja, piensa en todos los segundos que pierdes al alejar tu mano del teclado para tomar el mouse. Que si lo sumamos pueden llegar a ser una cantidad de tiempo considerable.

Una vez te aprendas los comandos, el usar VIM te será muy fácil y rápido.

Nota Estos comandos solo podrás ejecutarlo si estás en modo normal. Para escribir debes estar en modo insert.

Los básicos son los siguientes:


TeclaFunción
ESCEntra en modo normal
iEntra en modo insert
wDesplazamiento una palabra a la derecha
bDesplazamiento una palabra a la izquierda
HDesplazamiento a la parte superior de la pantalla
LDesplazamiento a la parte inferior de la pantalla
GNos lleva hasta el final del documento
0Nos lleva hasta el inicio del documento
IComienza a introducir el texto al inicio de la línea del cursor
ddCorta la línea actual (estará disponible en el portapapeles)
DCorta desde la posición actual del cursor hasta el final de la línea
yyCopia al completo la línea donde se encuentra el cursor
PPega en la línea previa a la que nos encontremos el contenido del portapapeles
pPega el la línea siguiente a la nos encontremos el contenido del portapapeles
.Repite el último comando (ideal cuando presionamos u por equivocación)
uDeshace el último comando
UDeshace el último comando aplicado a la línea donde se encuentre el cursor
:/palabraBusca la palabra en el documento
nEncuentra la siguiente palabra
NEncuentra la palabra anterior:
:buffersMuestra un listado de los ficheros abiertos en el momento de la solicitud y el estado en que se encuentran
:wGuarda los cambios del buffer
:! comandoEjecuta un comando bash.
:wqGuarda y sale de VIM
:qSale de VIM
:q!Fuerza la salida de VIM sin guardar cambios
<h1>Personalización de VIM</h1>

Ahora, vamos con la personalización que es un poco más complejo. Debemos ingresar al archivo de configuración de vim de nuestro usuario:

vim ~/.vimrc

Debe contener lo siguiente:

set nocompatible
syntaxon
set nowrap
set encoding=utf8

"""" START Vundle Configuration
" Disable filetypefor vundle
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" Utility
Plugin 'scrooloose/nerdtree'
Plugin 'majutsushi/tagbar'
Plugin 'ervandew/supertab'
Plugin 'BufOnly.vim'
Plugin 'wesQ3/vim-windowswap'
Plugin 'SirVer/ultisnips'
Plugin 'junegunn/fzf'
Plugin 'godlygeek/tabular'
Plugin 'ctrlpvim/ctrlp.vim'
Plugin 'benmills/vimux'
Plugin 'jeetsukumaran/vim-buffergator'
Plugin 'gilsondev/searchtasks.vim'
Plugin 'Shougo/neocomplete.vim'
Plugin 'tpope/vim-dispatch'

" Generic Programming Support
Plugin 'jakedouglas/exuberant-ctags'
Plugin 'honza/vim-snippets'
Plugin 'Townk/vim-autoclose'
Plugin 'tomtom/tcomment_vim'
Plugin 'tobyS/vmustache'
Plugin 'janko-m/vim-test'
Plugin 'maksimr/vim-jsbeautify'
Plugin 'vim-syntastic/syntastic'
Plugin 'neomake/neomake'

" Markdown / Writting
Plugin 'reedes/vim-pencil'
Plugin 'tpope/vim-markdown'
Plugin 'jtratner/vim-flavored-markdown'
Plugin 'LanguageTool'

" Git Support
Plugin 'kablamo/vim-git-log'
Plugin 'gregsexton/gitv'
Plugin 'tpope/vim-fugitive'
Plugin 'jaxbot/github-issues.vim'

" Theme / Interface
Plugin 'AnsiEsc.vim'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'tomasr/molokai'
Plugin 'zenorocha/dracula-theme', {'rtp': 'vim/'}
Plugin 'mkarmona/colorsbox'
Plugin 'chriskempson/base16-vim'
Plugin 'AlessandroYorba/Sierra'
Plugin 'effkay/argonaut.vim'
Plugin 'atelierbram/Base2Tone-vim'

" Theme / Interface
Plugin 'ryanoasis/vim-devicons'
Plugin 'sjl/badwolf'
Plugin 'morhetz/gruvbox'
Plugin 'junegunn/limelight.vim'
Plugin 'romainl/Apprentice'
Plugin 'Lokaltog/vim-distinguished'
Plugin 'w0ng/vim-hybrid'
Plugin 'daylerees/colour-schemes'
Plugin 'ajh17/Spacegray.vim'
Plugin 'colepeters/spacemacs-theme.vim'

call vundle#end()            " required
filetype plugin indent on    " required
"""" END Vundle Configuration 

"""""""""""""""""""""""""""""""""""""
" Configuration Section
"""""""""""""""""""""""""""""""""""""
" Show linenumbers
set number
set ruler

" Dictionary
set spell
set spelllang=es,en

" Set Proper Tabs
set tabstop=4
set shiftwidth=4
set smarttab
set expandtab

" Always display the status lineset laststatus=2

" Enable Elite mode, No ARRRROWWS!!!!
let g:elite_mode=1

" Enable highlighting of the current lineset cursorline

" Theme and Styling 
set t_Co=256
set background=dark

if (has("termguicolors"))
  set termguicolors
endif

let base16colorspace=256  " Access colors present in 256 colorspace
colorscheme spacegray
" colorscheme spacemacs-theme

let g:spacegray_underline_search = 1
let g:spacegray_italicize_comments = 1

" Vim-Airline Configuration
let g:airline#extensions#tabline#enabled = 1
let g:airline_powerline_fonts = 1
let g:airline_theme='hybrid'
let g:hybrid_custom_term_colors = 1
let g:hybrid_reduced_contrast = 1

" Nerdtree
" Initialize with :NERDTree .
" Iniciar NerdTree al abrir VIM
autocmd vimenter * NERDTree

" Instrucciones básicas de NerdTree
" Abrir directorio del archivo :NERDTreeFind
" Abrir el directorio del terminal :NERDTree .
" Podemos ocultar la vista abol y quedarnos con el archivo actual con :NERDTreeToggle , si queremos revertir volvemos usar el mismo comando.
" Para intercambiar entre la vista lista o árbol y la vista del archivo se debe usar: ctrl-ww
" Con t abrimos un archivo dela vista lista en un nuevo tab, vim nos ubica en el archivo listo para poder editarlo. Podemos recorrer por todos los tabs hasta llegar a la vista lista con gt. Si usamo T abre el archivo en un nuevo tab con la diferencia que vim nos mantiene enfocados enla vista lista.
" También podemos abrir un archivo en una nueva ventana vertical con s, horizontal con i. Para intercambiar el enfoque del cursor entre las ventanas existentes (vista lista, ventana vertical de archivo 1, ventana vertical de archivo 2, etc) podemos usar: ctrl-ww (recorre todas las ventanas), ctrl-wh (toma la ventana izquierda), ctrl-wj (toma la venta de abajo), ctrl-wk (toma la ventana de arriba), ctrl-wl (toma la ventana derecha)

Guardamos con

:wq

Ahora para que se vea bien el Airline necesitamos tener instalado Powerline con:

sudo pacman -S powerline

Se debe agregar esa codificación al terminal para que vim lo reconozco. Yo uso Konsole así que no necesité hacer una configuración manual.

El siguiente paso es instalar vundle

mkdir ~/.vim/bundle
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

Ingresamos en VIM (ignora los errores por los momentos) y allí colamos el comando :PluginList para ver el listado de plugin en vim y luego :PluginInstall para instalarlos.

Sal y entra nuevamente, esta vez deberías tener VIM como sale en la imagen de arriba.

Ahora te contaré un poco de algunas de los plugin que tienes:

<dl>

<dt>Vundle</dt>

<dd>Es un gestor de plugins para VIM. Es como decir npm para Javascript o pip para Python.</dd>

<dt>NERDTree</dt>

<dd>Para acceder de manera muy sencilla al directorio donde te encuentras desde VIM. Al final del documento .vimrc te dejé unas instrucciones que también encontrarás en las referencias.</dd>

<dt>MARKDOWN</dt>

<dd>Ayuda mucho a la escritura en MARKDOWN. Déjame decirte que lo usas cada vez que escribes un tutorial o haces una pregunta en Platzi.</dd>

<dt>GIT SUPPORT</dt>

<dd>Para que muestre en el airline la rama en la que te encuentras</dd>

<dt>AIRLINE</dt>

<dd>Es la barra inferior que tienes en tu VIM, tienes la rama donde estás, el idioma de tu corrector ortográfico, cantidad de palabras, el procentaje donde estás respecto a todo el documento.</dd>

</dl>

<h1>Plugin de VIM para usar Go</h1>

Ahora que ya tenemos VIM listo, vamos a instalar el soporte para Go

Lo primero que debemos hacer es entrar en el fichero ~/.vimrc y agregar lo siguiente:

" Plugin Go

Plugin 'fatih/vim-go'" Importación automática al guardar en go" format with goimports instead of gofmtletg:go_fmt_command = "goimports"" Correr para quese importe todas las librerías necesarias":GoImports

Guardamos y salimos con :wq. En una terminal insertamos lo siguiente:

git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
git clone https://github.com/fatih/vim-go.git ~/.vim/bundle/vim-go

Ingresa en VIM y coloca :PluginInstall vim.go y :PluginInstall

Sal y vuelve a entrar a VIM, aquí ya tienes tu VIM instalado como en la imagen y listo para codear en Go.

<h1>Beneficios de condear Go en VIM</h1>

Hay unos comandos interesantes que puedes ejecutar estando en VIM y sin salirte, entre ellos

<dl>

<dt>:GoBuild</dt>

<dd>Para compilar</dd>

<dt>:GoImports</dt>

<dd>Importa las librerías que necesites, aunque con la configuración que hicimos arriba, debería importar con solo guardar</dd>

<dt>:GoTest</dt>

<dd>Hace un test para verificar que todo el código esté bien</dd>

<dt>:GoRun .</dt>

<dd>Corre el codigo go</dd>

</dl>

Conclusiones


  • Solo lo he utilizado para escibir mis tutoriales aquí en platzi, los artículos de mi página web osmandi.github.io y los README.md de mis repositorios en github.com/osmandi. Todos tienen algo en común Markdown y VIM es una excelente herramienta para esto.
  • VIM es un excelente editor de código por terminal, es ligero y lo puedes usar tranquilamente desde un servidor.
  • Puedes ejecutar código y comandos bash sin sali de VIM, algo muy bueno para hacer debug.
  • Con todo esto, voy a probar codear en Go con VIM. Hasta ahora lo he hecho en Atom pero quiero ver qué tal.

Recuerda dejarme tus comentarios. Y si tienes experiencia usando VIM me gustaría que la compartieras.

Saludos y muchas gracias 😄

Referencias

Escribe tu comentario
+ 2
2
43530Puntos
4 años

Excelente información, era lo que andaba buscando en Platzi, ya que hace falta un buen curso de como manejar VIM.

1
16708Puntos
3 años

Hola tengo problemas para instalar los plugins, no sé si es la forma como lo estoy haciendo, pues cree el archivo oculto .vimrc con toda la información que contiene la muestra de esta clase, después de guardar y salir, instalar el powerline en Ubuntu, luego cree la carpeta mkdir ~/.vim/bundle, la cloné de git
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
Finalmente ingreso al editor vim, y estando en modo normal tecleo :PluginList y luego PluginInstall, pero cuando ingreso estos dos comandos me saca error E492: Not an editor command: PluginList

1
16708Puntos
3 años

Ya supe que era lo que pasaba, luego de descargar la aplicación hay que actualizar el gestor de paquetes de linux apt, para que reconozca el paquete instalado con el comando:
sudo apt update
luego de esto si se ingresa a vim y se ingresa :PluginList donde nos muestra toda la lista de Plugins y luego le damos PluginInstall y ya empieza a instalar todos lo plugins.