Usted, bajo la presión de colegas o compañeros de estudios de grupos más exitosos, ha decidido un paso desesperado que puede dividir su vida en el período "antes" y "después" (ha superado el vimtutor) , ¿y ahora no sabe qué hacer con sus nuevas habilidades? O tal vez todavía está sentado en algún tipo de IDE y no explota ¿por qué necesita "estos sus cuadernos de programación" y "algún tipo de Vim allí" ? Luego siéntate y sírvete limonada, ahora pondré todo en los estantes.

(El artículo se recomienda para lectura secuencial, pero para su comodidad, la tabla de contenido se proporciona a continuación)
- Entrada
- Administrador de complementos
- Tintura de apariencia
- Soporte de idioma ruso
- Integración con programas externos.
- En breve sobre (b)
- Conclusión
Definamos la terminología.
Vim (en adelante denominado Vim) es, como muchos ya saben, un editor de texto. Por supuesto, cambiar lo que escribió es una tarea muy importante, que es un cuello de botella en su productividad, pero, desafortunadamente, no todo en esta vida es tan simple, y usted (como usuario) a menudo necesita otra funcionalidad.
Un entorno de trabajo es un conjunto de programas de desarrollo de software. Por ejemplo, puede contener un compilador, una consola interactiva, un editor para colocar elementos de la GUI, un depurador y más. El editor es solo una pequeña pieza de este rompecabezas.
Un IDE es un lugar de trabajo completo en un solo lugar. Por supuesto, hay programas como Emacs (en lo sucesivo, Emax) , donde usted mismo es libre de insertar en él todo lo que desee con la habilidad adecuada, pero la mayoría de las veces es un paquete preparado para usted.
" ¿Por qué necesito a Wim si el IDE hace todo por mí?"
Anteriormente, su diseño era un argumento poderoso, ya que para muchos es más conveniente que los atajos de teclado modernos de varios botones tipo Emax para navegación y edición de texto. Sin embargo, gracias a Neovim y otros proyectos como VSCodeVim , está literalmente en todas partes.
Sin embargo, hay otro argumento más poderoso: el rendimiento. El IDE a menudo tiene una gran cantidad de funcionalidades que no utiliza, y procesos en segundo plano que cargan mucho el sistema. Incluso si su MacBook no grita como un luchador de PyCharm o no tiene desplazamiento en Visual Studio (lo cual es imposible, son mis mentirosos) , y el subproceso único de Emax no le recuerda el primer Crysis o STALKER, la cuestión del consumo de energía aún surge y, como resultado, duración de la batería Dicho software en la comunidad Linux se caracteriza por el término meme "hincha".

- ¿Por qué Wim?
Ya tengo un artículo sobre todos los encantos de este programa. Sin embargo, fue escrito por un hombre bajo la impresión de un nuevo juguete con un nivel de inteligencia de segundo año (adivina por qué) que resultó en una cantidad tan críticamente pequeña de significado que se formó un agujero negro en su lugar. Bueno, al menos las fotos divertidas fueron un éxito ...
¿Qué puedo decir sobre él ahora, después de un año de uso activo?
- El es muy rápido. Debido a la naturaleza de su representación, Wim tiene una latencia mucho menor que otros editores. Después de eso, otros editores parecen no responder, ya estoy en silencio sobre los IDEs mencionados anteriormente.
- Su uso es similar al paso de la tercera Dark Souls después de la primera parte. Al principio es difícil e inusual, ya que el juego se ha vuelto más rápido, y no puedes concebir muchos momentos difíciles con la ayuda del componente RPG, pero luego te das cuenta de que el juego ha demostrado ser cierto, y casi todos los jefes hacen el segundo intento.
- Prácticamente no gasta recursos y funciona incluso con pan, lo cual es muy bueno para la batería.
En principio, no hay nada francamente malo en otros editores, así que deje esta elección a su discreción personal. Estoy convencido de que puedes encontrar un artículo similar para tu programa favorito. Aunque, para ser sincero, los editores en electrónica difícilmente pueden pasar por el criterio de eficiencia energética.
En este artículo, llevaremos a Wim a un estado digerible para un trabajo serio, y también le enseñaremos a ser amigo de algunos programas de desarrollo de terceros. Tenga en cuenta que solo hablaré sobre lo que encontré personalmente, y si tiene sugerencias interesantes, bienvenido a los comentarios.
Inserte una broma sobre el enchufe
El arma principal para configurar a nuestro amigo son los complementos. De hecho, estos son solo archivos separados con código VimScript que se ejecutan cuando su archivo de configuración (~ / .vimrc o ~ / .config / nvim / init.vim) se carga con el comando de origen. Usar bolígrafos para descargar todo esto es bastante doloroso, por lo que las grandes mentes de la humanidad idearon administradores de paquetes ... ¡para Wim!
La tarea principal del administrador de paquetes es descargar los complementos especificados desde github, proporcionar al usuario una interfaz conveniente para administrarlos y, de hecho, conectarlos al cargar Wim. Existen, por supuesto, gerentes minimalistas del tipo de patógenos (que se ocupa principalmente de solo el tercero) , pero no nos complicaremos tanto la vida.
Nuestra sala de hoy será vim-plug . Pero, antes de instalarlo, primero debe agregar un par de líneas a su configuración:
filetype plugin indent on " , ...
"...
set encoding=utf-8 " UTF-8
set nocompatible " Vi
syntax enable "
. . Vim Neovim, . :
if empty(glob('~/.vim/autoload/plug.vim')) " vim-plug
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs "
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
"
" PlugInstall,
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
, , . , curl, Neovim ~/.vim
~/.local/share/nvim/site
. , . Neovim :
call plug#begin('~/.vim/bundle') "
"
call plug#end() "
. :
Plug '/' "
" ...
"... :PlugInstall
vim-plug , , , . , , . / , .

...
, , , 90% — . , , . .
(MacVim) :

. . , Sublime Text — Monokai, .
...
Plug 'ErichDonGubler/vim-sublime-monokai' "
...
colorscheme sublimemonokai "
( ), . , Darcula, Solarized Dark ...

status bar. , tmux WM , . Airline:
...
Plug 'vim-airline/vim-airline' "
...
"
let g:airline_powerline_fonts = 1 " Powerline
let g:airline#extensions#keymap#enabled = 0 "
let g:airline_section_z = "\ue0a1:%l/%L Col:%c" "
let g:Powerline_symbols='unicode' " unicode
let g:airline#extensions#xkblayout#enabled = 0 "
Powerline , , , — , . Keymap , ( ). \ue0a1
— "ln", , .
Airline :

:

, . , gui Powerline. , :
"16
set guifont=____:h16
. -, . , — Fira Code, ( ). -, Devicons, Airline Nerdtree ( ) .
...
Plug 'ryanoasis/vim-devicons' "
...
.

, Powerline , Nerd Font, Fira Code . , MacOS brew :
#
brew tap homebrew/cask-fonts
brew cask install font-firacode-nerd-font
( GUI. , "" ):
set guifont=Fura\ Code\ Light\ Nerd\ Font\ Complete:h16 " light
:

. ( :help
) ( ). , :
set guioptions= " GUI
set showtabline=0 " ( FTW)
" number
"relativenumber -
set number relativenumber " .
"wrap
" nowrap
set wrap linebreak nolist " wrap...
"... ,
" soft wrapping
" ...
"... :
set textwidth=80 " 80
set cursorline "
" , NeoVim, ...
"... :
set ttimeoutlen=10 " escape
let &t_SI.="\e[5 q" "SI =
let &t_SR.="\e[3 q" "SR =
let &t_EI.="\e[1 q" "EI =
" 1 -
"2 -
"3 -
"4 -
"5 -
"6 -
set macligatures " MacVim
"
?
, , — . , - , , , .
. , . — , . , ( ) .
, . , gVim MacVim, ( ). :
Langmap
, , :
set langmap=;ABCDEFGHIJKLMNOPQRSTUVWXYZ,;abcdefghijklmnopqrstuvwxyz
. . , , .
Keymap
:
" qwerty, mac win
set keymap=russian-jcukenmac
" -
set iminsert=0
"
set imsearch=0
, — … <C-^>
… , . , , .
, , . , , ( ) Keymap .
Xkb-switch
. . Xkb-switch , , , MacOS. .
#
git clone https://github.com/myshov/xkbswitch-macosx
# $PATH
cp xkbswitch-macosx/bin/xkbswitch /usr/local/bin/xkbswitch
# -
git clone https://github.com/myshov/libxkbswitch-macosx
cp libxkbswitch-macosx/bin/libxkbswitch.dylib /usr/local/lib/libxkbswitch.dylib
:
...
Plug 'lyokha/vim-xkbswitch'
...
let g:XkbSwitchEnabled = 1 "
. . Airline, Xkb-switch? , ( ) , .
. Xkb-switch , , vice versa. . .
, .

...
Slime
, — Slime. Ctrl-C-C, REPL . :
...
Plug 'jpalardy/vim-slime'
...
, , Slime screens , . , tmux (, ). :
" tmux
let g:slime_target = "tmux"
"
let g:slime_target = "vimterminal"
"
let g:slime_target = "neovim"
Jupyter
, . Jupyter — iPython, matplotlib. notebook lab, — .
… , , Jupyter:
jupyter qtconsole --generate-config
vim ~/.jupyter/jupyter_qtconsole_config.py
#c.ConsoleWidget.include_other_output = False
, False True.
Jupyter-vim:
...
Plug 'jupyter-vim/jupyter-vim'
...
, Python ( ), ( ## #%%) Jupyter. :
jupyter qtconsole &
:JupyterConnect " ,
\X ( \ — <localleader>
) Jupyter , , \R . .
, . , :
nnoremap <leader>jc :call jupyter#Connect()<CR> "
Jupyter , . , , , .
, , . , — .
LaTeX
, , . "" " " — (, ?). , .
, , ? , LaTeX! , , . Vimtex.
...
Plug 'lervag/vimtex'
...
let g:tex_flavor = 'latex' "
" Quickfix
let g:vimtex_quickfix_mode = 0
, .tex <localleader>ll
( :VimtexCompile
), , Quickfix Location , pdf.
MacOS Preview . Zathura, , . :
# MacOS ( XQuartz)
brew tap zegervdv/zathura
brew install zathura --with-synctex
brew install zathura-pdf-poppler
# ( )
mkdir -p $(brew --prefix zathura)/lib/zathura
ln -s $(brew --prefix zathura-pdf-poppler)/libpdf-poppler.dylib $(brew --prefix zathura)/lib/zathura/libpdf-poppler.dylib
#
# Vimtex
#
brew install xdotool
Vimtex zathura :
let g:vimtex_view_method = 'zathura'
Linux pdf. , : Vim <C-z>
, zathura _.pdf &
— fg
.

, ~/.config/zathura/zathurarc
(, )
set recolor true
set recolor-darkcolor "#dcdccc"
set recolor-lightcolor "#1f1f1f"
Markdown
, LaTeX . . Markdown.
Markdown ( " ") — , HTML. ( ). , , — .
Livedown. — vimtex markdown. . Nodejs :
# MacOS
brew install node
#
npm install -g livedown
:
...
Plug 'shime/vim-livedown'
...
"
nnoremap <leader>ld :LivedownToggle<CR>
<leader>ld
( ) . , HTML , , markdown , "" .
, markdown — . Markdown-preview. , Livedown, ( ). , .
, , () . , , :

. — , . , .
Vim, Sublime Text . . , .
, gdb, lldb .
:make
, . , , , ( ).
, YouCompleteMe , Neomake:
...
Plug 'Valloric/YouCompleteMe'
Plug 'neomake/neomake'
...
" , YCM
": python3 ~/.vim/bundle/YouCompleteMe/install.py --clang-completer
let g:ycm_show_diagnostics_ui = 0 " YCM
" Neomake
let g:neomake_cpp_clang_maker = {
\ 'exe': 'clang++',
\ 'args': ['-I/usr/local/include/wx-3.0', '-std=c++17'],
\ }
<C-]>
, . . ctags:
#
ctags -R &
, ( YCM):
" :
:YcmCompleter GoToDeclaration
, — . . ...
. , .
— ( , ). , , . 8 ( NeoVim ) API . , , .
AsyncRun. Vim 8, NeoVim ( ).
...
Plug 'skywind3000/asyncrun.vim'
...
nnoremap <F3> :AsyncRun ctags -R<CR>
F3 ctags. AsyncRun
Quickfix. AsyncStop
.
, zathura :
:AsyncRun zathura mew.pdf
Git
Git, . IDE , , , . - Fugitive, .
, , , . :Gfetch
:Gpush
:Make
, :
command! -bang -nargs=* -complete=file Make AsyncRun -program=make @ <args>
, IDE , , , . , , . , , , - . .
, , ( NeoVim) ...
