Fazendo doces com o Vim

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)


  1. Entrada
  2. Gerenciador de plug-ins
  3. Tintura da aparência
  4. Suporte ao idioma russo
  5. Integração com programas externos
  6. Breve sobre (b)
  7. 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?


  1. 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.
  2. 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.
  3. 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) ...



Source: https://habr.com/ru/post/pt468265/


All Articles