Você, sob a pressão de colegas ou colegas de grupos mais bem-sucedidos, decidiu dar um passo desesperado que pode dividir sua vida no período "antes" e "depois" (aprovado pelo vimtutor) e agora não sabe o que fazer com suas novas habilidades? Ou talvez você ainda esteja sentado em algum tipo de IDE e não se preocupe, por que precisa desses "seus cadernos de programação" e "algum tipo de Vim aí" ? Então sente-se e sirva-se limonada, agora vou colocar tudo nas prateleiras.

(O artigo é recomendado para leitura seqüencial, mas para sua conveniência, o índice é fornecido abaixo)
- Entrada
- Gerenciador de plug-ins
- Tintura da aparência
- Suporte ao idioma russo
- Integração com programas externos
- Breve sobre (b)
- Conclusão
Vamos definir a terminologia
O Vim (a seguir denominado Vim) é, como muitos já sabem, um editor de texto. É claro que alterar o que você escreveu é uma tarefa muito importante, que é um gargalo na sua produtividade, mas, infelizmente, nem tudo nesta vida é tão simples, e você (como usuário) geralmente precisa de outras funcionalidades.
Um ambiente de trabalho é um conjunto de programas de desenvolvimento de software. Por exemplo, ele pode conter um compilador, um console interativo, um editor para posicionar elementos da GUI, um depurador e muito mais. O editor é apenas um pequeno pedaço deste quebra-cabeça.
Um IDE é um local de trabalho inteiro em um só lugar. Obviamente, existem programas como o Emacs (doravante denominado Emax) , onde você é livre para inserir nele tudo o que quiser com a habilidade adequada, mas na maioria das vezes é um pacote pronto compilado para você.
" Por que eu preciso do Wim, se o IDE faz tudo por mim?"
Anteriormente, seu layout era um argumento poderoso, pois para muitos é mais conveniente do que os modernos atalhos de teclado com vários botões do tipo Emax para navegação e edição de texto. No entanto, graças ao Neovim e outros projetos como o VSCodeVim , ele está literalmente em todo lugar.
No entanto, há outro argumento mais poderoso - o desempenho. O IDE geralmente possui uma enorme quantidade de funcionalidades que você não usa e processos em segundo plano que carregam muito o sistema. Mesmo que o seu MacBook não grite como um lutador do PyCharm ou você não tenha rolado no Visual Studio (o que é impossível, vocês são meus mentirosos) , e o single-threading do Emax não o lembra do primeiro Crysis ou STALKER, a questão do consumo de energia ainda surge e, como resultado, duração da bateria. Esse software na comunidade Linux é caracterizado pelo termo meme "inchaço".

- Por que Wim?
Eu já tenho um artigo sobre todos os encantos deste programa. No entanto, foi escrito por um homem com a impressão de um novo brinquedo com um nível de inteligência de segundo ano (adivinhe por que ) que resultou em uma quantidade tão crítica de significado que um buraco negro se formou em seu lugar. Bem, pelo menos as fotos engraçadas foram um sucesso ...
O que posso dizer sobre ele agora, depois de um ano de uso ativo?
- Ele é muito rápido. Devido à natureza de sua renderização, o Wim possui uma latência muito menor do que outros editores. Depois disso, outros editores parecem não responder, já estou em silêncio sobre os IDEs acima mencionados.
- Seu uso é semelhante à passagem das terceiras almas das trevas após a primeira parte. No início, é difícil e incomum, já que o jogo se tornou mais rápido e você não pode conceber muitos momentos difíceis com a ajuda do componente RPG, mas depois percebe que o jogo se mostrou verdadeiro e quase todos os chefes fazem a segunda tentativa.
- Praticamente não gasta recursos e funciona mesmo com pão, o que é muito bom para a bateria.
Em princípio, não há nada francamente ruim em outros editores; portanto, deixe essa opção a seu critério. Estou convencido de que você pode encontrar um artigo semelhante para o seu programa favorito. Embora, para ser sincero, os editores de elétrons dificilmente passem pelo critério de eficiência energética.
Neste artigo, levaremos Wim a um estado digestível para um trabalho sério e também o ensinaremos a ser amigo de alguns programas de desenvolvimento de terceiros. Observe que só falarei sobre o que encontrei pessoalmente e, se você tiver sugestões interessantes, bem-vindo aos comentários.
Insira uma piada sobre o plugue
A principal arma para configurar nosso amigo são os plugins. Na verdade, esses são apenas arquivos separados com o código VimScript que são executados quando você carrega o arquivo de configurações (~ / .vimrc ou ~ / .config / nvim / init.vim) com o comando source. Usar canetas para baixar tudo isso é bastante doloroso, então as grandes mentes da humanidade inventaram os gerenciadores de pacotes ... para o Wim!
A principal tarefa do gerenciador de pacotes é fazer o download dos plug-ins especificados no github, fornecer ao usuário uma interface conveniente para gerenciá-los e, de fato, conectá-los ao carregar o Wim. É claro que existem gerentes minimalistas do tipo Pathogen (que lida principalmente com apenas o terceiro) , mas não complicaremos muito nossas vidas.
Nossa ala hoje será vim-plug . Mas, antes de instalá-lo, primeiro você precisa adicionar algumas linhas à sua configuração:
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) ...
