Editor de código Neo Vim
Introducción
Uno de los mejores editores de texto que han existido. Es programable y configurable en su totalidad y aunque la curva de aprendizaje es extremadamente alta, es una herramienta que se ha convertido para mí en imprescindible..
Se puede descargar desde el sitio oficial de Neo Vim.
.vimrc
Este es mi fichero de configuración personal a fecha de .
"Pathogen PLUGINS
execute pathogen#infect()
"scriptnames
"Fuentes: https://github.com/mectos/dotfiles/blob/master/vim/vimrc
call plug#begin(stdpath('data') . '/plugged')
Plug 'scrooloose/nerdtree'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'tpope/vim-fugitive' " Status de git
Plug 'mhartington/oceanic-next' " Tema de colores
Plug 'danilo-augusto/vim-afterglow' " Tema de colores
"Plug 'neovim/nvim-lspconfig'
"Plug 'neovim/nvim-lspconfig'
"Plug 'kabouzeid/nvim-lspinstall'
"Plug 'rudrab/vimf90'
"Plug 'kyazdani42/nvim-web-devicons' " for file icons
"Plug 'kyazdani42/nvim-tree.lua'
"Plug 'neovim/nvim-lspconfig'
"Plug 'leanprover/lean.vim'
"Plug 'autozimu/LanguageClient-neovim', {
" \ 'branch': 'next',
" \ 'do': 'bash install.sh',
" \ }
call plug#end()
syntax on
syntax enable
set t_Co=256
if $TERM_PROGRAM != "Apple_Terminal"
set termguicolors
endif
colorscheme OceanicNext
set number background=dark
set mouse=a
set title
set laststatus=2
set cursorline
set clipboard=unnamedplus "Registro * como clipboard
set ignorecase "Search ignore case
set autoindent
" Dirección en la que se expanden la apertura de nuevas ventanas split
set splitright
set splitbelow
colorscheme OceanicNext
filetype plugin indent on
"Búsqueda
set hlsearch "Highlight Búsqueda
set incsearch "set incremental search, like modern browsers
"Fuentes UTF-8
set encoding=utf-8
set fileencoding=utf-8
set termencoding=utf-8
"Unodfile
set undofile
set undodir=~/.vim/undodir
"Tabulaciones de 4 espacios y la tecla tabulador también será de 4 espacios
set noexpandtab
set tabstop=4
set shiftwidth=4
set textwidth=100
"Markdown PLUGIN
augroup filetype_markdown
let g:vim_markdown_folding_disabled = 1
let g:vim_markdown_math = 1
let g:vim_markdown_frontmatter = 1
augroup end
"Atajos LaTeX
augroup filetype_tex
"Begin End
autocmd filetype tex inoremap <C-B> <ESC>YpkI\begin{<ESC>A}<ESC>jI\end{<ESC>A}<esc>kA
inoremap <C-p> \begin{problema}{\cite[p]{prieto}}{<ESC>o}<Esc>o\end{problema}<Esc>kk10li
"Letras Griegas
inoremap <C-g>a \alpha
inoremap <C-g>b \beta
inoremap <C-g>l \lambda
inoremap <C-g>m \mu
inoremap <C-g>g \gamma
inoremap <C-g>e \epsilon
inoremap <C-g>o \omega
inoremap <C-g>s \sigma
"Letras bonitas para conjuntos
inoremap <C-b>c \mathbb{C}
inoremap <C-b>k \mathbb{K}
inoremap <C-b>n \mathbb{N}
inoremap <C-b>r \mathbb{R}
"Vectores
inoremap <C-e>0 \vec{0}
inoremap <C-e>e \vec{e}
inoremap <C-e>u \vec{u}
inoremap <C-e>v \vec{v}
inoremap <C-e>w \vec{w}
inoremap <C-e>x \vec{x}
inoremap <C-e>y \vec{y}
inoremap <C-e>z \vec{z}
augroup end
augroup filetype_fortran
autocmd filetype fortran let b:fortran_free_source = 1
autocmd filetype fortran let g:use_findent = 1
autocmd filetype fortran let g:indent_flags = "-Rr"
autocmd filetype fortran noremap zz :w<cr>:!wfindent -Rr -i4 %<cr>:e<cr>
augroup end
"Rust
let g:rustfmt_autosave = 1
"Autocompletar
inoremap <expr> ) strpart(getline('.'), col('.')-1, 1) == ")" ? "\<Right>" : ")"
inoremap <expr> ] strpart(getline('.'), col('.')-1, 1) == "]" ? "\<Right>" : "]"
inoremap { {}<left>
inoremap <expr> } strpart(getline('.'), col('.')-1, 1) == "}" ? "\<Right>" : "}"
inoremap {<cr> {<cr>}<ESC>ko
"Colores de comentarios
"https://jonasjacek.github.io/colors/
"Listar colores activos para modificar :so $VIMRUNTIME/syntax/hitest.vim
"Listar colores activos :hi
set background=dark
highlight Comment ctermfg=red guifg=#ff3030
highlight LineNr ctermfg=23 guifg=#00d787
highlight PmenuSel ctermfg=white ctermbg=38 guifg=white guibg=#00afd7
highlight Pmenu ctermbg=28 guibg=#303030 guifg=#606060
"highlight Normal ctermfg=46 guifg=#ffffff
highlight Normal ctermfg=46 guifg=#18F018
highlight PreProc guifg=#ffb533 guibg=none
highlight Type guifg=#0077ff
highlight fortranTab guifg=none guibg=none
highlight fortranUnitHeader guifg=orange gui=bold guibg=none
"Colores para GNUPlot
autocmd BufEnter *.gnuplot :setlocal filetype=gnuplot
autocmd BufEnter *.gp :setlocal filetype=gnuplot
"autocmd BufEnter *.jl :setlocal filetype=julia
"Atajos generales de teclado
nnoremap cc :!make<cr>
nnoremap <S-s><S-s> :w<cr>
nnoremap ls :buffers<cr>
nnoremap gb :w<cr>:buffers<cr>:b<space>
inoremap jj <ESC>
map <space> /
"Cita
"inoremap <C-i> {\cite[p]{palacios}}{<Esc>o<Esc>}<ESC>k15li
"inoremap {\cite[p]{palacios}}{<Esc>o<Esc>
"Números de línea
set number relativenumber
augroup numbertoggle
autocmd!
autocmd BufEnter,FocusGained,InsertLeave * set relativenumber
autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
augroup END
"No backups
set nobackup
set nowb
set noswapfile
"Skeletons
"autocmd BufNewFile *.c 0r ~/.vim/skeleton/skeleton.c
"autocmd BufNewFile *.tex 0r ~/.vim/skeleton/skeleton.tex
"autocmd BufNewFile *.html 0r ~/.vim/skeleton/skeleton.html
"Cambia el aspecto dependiendo del modo de VIM
highlight Cursorline cterm=NONE gui=NONE guibg=NONE
autocmd InsertEnter * highlight Cursorline cterm=underline gui=underline
autocmd InsertLeave * highlight Cursorline cterm=NONE gui=NONE
set guicursor=
set statusline=%n)\ %m\ %F%=%c\ %l/%L\ %{FugitiveStatusline()}[%{&ff}\ %{&enc}\ %Y]
set wildmenu " enhanced command line completion
"set wildmode=list:longest " complete files like a shell
set scrolloff=3 " Minimum lines to keep above and below cursor
"NERDTree
nnoremap <C-l> :NERDTreeToggle<cr>
" Exit Vim if NERDTree is the only window remaining in the only tab.
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
" Close the tab if NERDTree is the only window remaining in it.
autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif