Luis Moreno | 🐧💻🇲🇽

ingeniero • mexicano • lector • cafeinómano y trabajador del metro

Configurando VIM para mis proyectos de Desarrollo

Hace poco tuve que retomar la actividad sobre el proyecto que dejé pendiente. No es que me desentienda de el sino que en lo profesional sigo haciendo más cosas además de programar ajeno.

Entonces tuve que instalar de nuevo mi editor de código predilecto y es simplemente por ser tan versátil y lleno de bondades cuando lo que requiero es enfocarme unicamente en programar y bueno, algo de productividad claro está.

Hace un par de años armé el gist que he arrastrado a través del tiempo para evitar configurar el editor desde 0 cada que lo requiero.

Por eso voy a dejar aquí el script que con poca frecuencia recurro a copiar y pegar en mi archivo. vimrc.

set nocompatible              " be iMproved, required

if empty(glob('~/.vim/autoload/plug.vim'))
  silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
    \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
    set rtp+=~/.vim/bundle/nerdtree
  autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif

call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'                           " Arbol para navegacion de directorio y archivos
Plug 'ctrlpvim/ctrlp.vim'                           " Busqueda y manupulacion de archivos en directorio y en buffer 
Plug 'tpope/vim-fugitive'                           " Git wrapper para ver modificacion de archivos en diferente branch del proyecto
Plug 'Yggdroot/indentLine'                          " Muestra marcas de identacion en cada linea
Plug 'godlygeek/tabular'                            " Alinea todo el bloque con el patron asignado, como :Tabularize /=
Plug 'Townk/vim-autoclose'                          " Cerrado automatico de comillas,parentesis,llaves y corchetes
Plug 'tomtom/tcomment_vim'                          " Comentar o Descomentar bloques de codigo
Plug 'mg979/vim-visual-multi', {'branch': 'master'} " Multiseleccion de palabras a partir de la seleccion
Plug 'MattesGroeger/vim-bookmarks'                  " Agregar bookmarks y anotaciones por linea
Plug 'vim-airline/vim-airline'                      " Muestra el Status bar del archivo
Plug 'vim-airline/vim-airline-themes'               " Schemas de colores para el Status bar
Plug 'crusoexia/vim-dracula'                        " Schema de color dracula
Plug 'SirVer/ultisnips' 
Plug 'algotech/ultisnips-php'
Plug 'mattn/emmet-vim'
Plug 'vim-scripts/taglist.vim'                      "Muestra el listado de funciones del codigo/ require ctags"
call plug#end() 

"Initialization nerdtree at start of vim editor"
"autocmd StdinReadPre * let s:std_in=1
"autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif

"Custom UltiSnips Triggers 
let g:UltiSnipsExpandTrigger="<tab>"
"Use tab to switch the next trigger point, shit + tab on a trigger point
let g:UltiSnipsJumpForwardTrigger="<tab>"
let g:UltiSnipsJumpBackwardTrigger="<S-tab>"
"Vertical splitting of the screen when using the UltiSnips Edit command
let g:UltiSnipsEditSplit="vertical"

"Custom vim-airline
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#formatter = 'unique_tail'
let g:airline_theme='alduin'

"Custom indentLine Plugin
let g:indentLine_color_term = 239
let g:indentLine_char = '¦'
let g:vim_json_syntax_conceal = 0 "Mostrar comillas clave:valor en archivos JSON 
let g:indentLine_leadingSpaceChar = '·'
let g:indentLine_leadingSpaceEnabled = 1

"Custom emmet-vim
let g:user_emmet_mode='a'
let g:user_emmet_leader_key=','

"Personal General Vim Settings
colorscheme torte
syntax on
set number
set relativenumber
set tabstop=4
set shiftwidth=4
set shiftround
set expandtab
set autoindent
set nowrap

set foldmarker={,}
set foldmethod=marker
"set foldtext=v:folddashes.substitute(getline(v:foldstart-1),'/\\*\\\|\\*/\\\|{{{\\d\\=','','g')
set foldcolumn=4
set foldlevelstart=1
set foldmethod=indent   
set foldnestmax=10
set nofoldenable
set foldlevel=2

"Personal mappings
set backspace=indent,eol,start

map <C-b> :NERDTreeToggle<CR>
map <C-q> :q!<CR>
map <C-s> :w<CR>

"Map toogle auto-wrap
nmap <C-z> :set wrap!<CR>

"Map indent on diferent modes
nmap <Tab> >>
nmap <S-Tab> << 
imap <Tab> <Space><Space><Space><Space>      
imap <S-Tab> <Esc><S-Tab>
vnoremap > >gv
vnoremap < <gv 

"Yank lines
nmap <C-S-d> yyp
vmap <C-S-d> y<S-p>gv<S-o><Esc><S-o><Esc>gv

"Taglist Functions
nmap <C-l> :TlistToggle<CR><Esc><C-w>h

Espero visitar este post en otra ocasión.

Chao! 🐧☕

, , , , ,