Aus Vim SĂĽĂźigkeiten machen

Sie haben sich unter dem Druck von Kollegen oder Kommilitonen aus erfolgreicheren Gruppen für einen verzweifelten Schritt entschieden, der Ihr Leben in die Zeit "vor" und "nach" (bestandener Vimtutor) unterteilen kann , und wissen jetzt nicht, was Sie mit Ihren neu entdeckten Fähigkeiten anfangen sollen ? Oder vielleicht sitzen Sie immer noch in einer Art IDE und blasen nicht, warum brauchen Sie "diese Ihre Programmierhefte" und "eine Art Vim dort" ? Dann lehnen Sie sich zurück und gießen Sie sich Limonade ein, jetzt stelle ich alles in die Regale.



(Der Artikel wird zum sequentiellen Lesen empfohlen. Das Inhaltsverzeichnis ist jedoch zur Vereinfachung unten angegeben.)


  1. Eintrag
  2. Plugin Manager
  3. Tinktur des Aussehens
  4. UnterstĂĽtzung der russischen Sprache
  5. Integration mit externen Programmen
  6. Kurz ĂĽber (b)
  7. Fazit


Definieren wir die Terminologie


Vim (im Folgenden als Vim bezeichnet) ist, wie viele bereits wissen, ein Texteditor. Natürlich ist das Ändern Ihrer Texte eine sehr wichtige Aufgabe, die einen Engpass in Ihrer Produktivität darstellt, aber leider ist nicht alles in diesem Leben so einfach, und Sie (als Benutzer) benötigen häufig andere Funktionen.


Eine Arbeitsumgebung besteht aus einer Reihe von Softwareentwicklungsprogrammen. Beispielsweise kann es einen Compiler, eine interaktive Konsole, einen Editor zum Positionieren von GUI-Elementen, einen Debugger und mehr enthalten. Der Editor ist nur ein kleiner Teil dieses Puzzles.


Eine IDE ist ein ganzer Arbeitsplatz an einem Ort. Natürlich gibt es Programme wie Emacs (im Folgenden als Emax bezeichnet) , in die Sie selbst alles, was Sie wollen, mit den richtigen Fähigkeiten einfügen können, aber meistens handelt es sich um ein für Sie zusammengestelltes Paket.


" Warum brauche ich dann Wim, wenn die IDE alles fĂĽr mich erledigt?"


Früher war das Layout ein starkes Argument, da es für viele bequemer ist als moderne Emax-ähnliche Tastaturkürzel mit mehreren Tasten für die Navigation und Textbearbeitung. Dank Neovim und anderen Projekten wie VSCodeVim ist es jedoch buchstäblich überall.


Es gibt jedoch noch ein anderes schlagkräftigeres Argument - die Leistung. Die IDE verfügt häufig über eine Vielzahl von Funktionen, die Sie nicht verwenden, sowie über Hintergrundprozesse, die das System stark belasten. Selbst wenn Ihr MacBook nicht wie ein Kämpfer von PyCharm schreit oder Sie in Visual Studio nicht scrollen (was unmöglich ist, Sie sind meine Lügner) und Emax 'Single-Threading Sie nicht an die erste Crysis oder STALKER erinnert, stellt sich immer noch die Frage nach dem Energieverbrauch. Akkulaufzeit. Solche Software in der Linux-Community ist durch den Meme- Begriff "Aufblähen" gekennzeichnet.



- Warum Wim?


Ich habe bereits einen Artikel über alle Reize dieses Programms. Es wurde jedoch von einem Mann unter dem Eindruck eines neuen Spielzeugs mit einer höheren Intelligenzstufe (raten Sie mal, warum) geschrieben , was zu einer so kritisch geringen Bedeutung führte, dass sich an seiner Stelle ein Schwarzes Loch bildete. Zumindest die lustigen Bilder waren ein Erfolg ...


Was kann ich jetzt nach einem Jahr aktiver Nutzung ĂĽber ihn sagen?


  1. Er ist sehr schnell. Aufgrund der Art des Renderings hat Wim eine viel geringere Latenz als andere Editoren. Danach scheinen andere Editoren nicht mehr zu reagieren, ich schweige bereits ĂĽber die oben genannten IDEs.
  2. Seine Verwendung ähnelt der Passage der dritten Dunklen Seelen nach dem ersten Teil. Zuerst ist es schwierig und ungewöhnlich, da das Spiel schneller geworden ist und man sich mit Hilfe der RPG-Komponente nicht viele schwierige Momente vorstellen kann, aber dann merkt man, dass sich das Spiel als wahr erwiesen hat und fast alle Bosse den zweiten Versuch machen.
  3. Es verbraucht praktisch keine Ressourcen und läuft sogar mit Brot, was sehr gut für die Batterie ist.

Grundsätzlich gibt es in anderen Redakteuren nichts Schlechtes. Überlassen Sie diese Wahl also Ihrem persönlichen Ermessen. Ich bin überzeugt, dass Sie einen ähnlichen Artikel für Ihr Lieblingsprogramm finden können. Um ehrlich zu sein, können Redakteure für Elektronen das Kriterium der Energieeffizienz kaum erfüllen.


In diesem Artikel werden wir Wim für ernsthafte Arbeit in einen verdaulichen Zustand bringen und ihm beibringen, mit einigen Entwicklungsprogrammen von Drittanbietern befreundet zu sein. Bitte beachten Sie, dass ich nur darüber sprechen werde, was mir persönlich begegnet ist. Wenn Sie interessante Vorschläge haben, begrüßen Sie die Kommentare.



FĂĽgen Sie einen Witz ĂĽber den Stecker ein


Die Hauptwaffe für die Konfiguration unseres Freundes sind Plugins. Tatsächlich sind dies nur separate Dateien mit VimScript-Code, die ausgeführt werden, wenn Sie Ihre Einstellungsdatei (~ / .vimrc oder ~ / .config / nvim / init.vim) mit dem Quellbefehl laden . Das Herunterladen all dieser Dinge mit Stiften ist ziemlich schmerzhaft, daher haben sich die großen Köpfe der Menschheit Paketmanager ausgedacht ... für Wim!


Die Hauptaufgabe des Paketmanagers besteht darin, die angegebenen Plugins vom Github herunterzuladen, dem Benutzer eine praktische Schnittstelle zum Verwalten bereitzustellen und sie beim Laden von Wim tatsächlich zu verbinden. Es gibt natürlich minimalistische Manager vom Typ Pathogen (der sich hauptsächlich nur mit dem dritten befasst) , aber wir werden unser Leben nicht so sehr komplizieren.


Unsere heutige Station wird Vim-Plug sein . Bevor Sie jedoch mit der Installation beginnen, müssen Sie Ihrer Konfiguration zunächst einige Zeilen hinzufügen:


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/de468265/


All Articles