صنع الحلوى من فيم

أنت ، تحت ضغط الزملاء أو الزملاء من الطلاب من مجموعات أكثر نجاحًا ، قررت اتخاذ خطوة يائسة يمكن أن تقسم حياتك إلى فترة "قبل" و "بعد" (مرت بفيموتور) ، والآن أنت لا تعرف ماذا تفعل بقدراتك المكتشفة حديثًا؟ أو ربما لا تزال تجلس في نوع ما من IDE ولا تهب لماذا تحتاج إلى "دفاتر ملاحظات البرمجة هذه" و "نوع من Vim هناك" ؟ ثم تجلس وتصب عصير الليمون ، والآن سأضع كل شيء على الرفوف.



(يوصى بقراءة المقال بالتسلسل ، ولكن من أجل راحتك ، يرد جدول المحتويات أدناه)


  1. دخول
  2. مدير البرنامج المساعد
  3. صبغة المظهر
  4. دعم اللغة الروسية
  5. التكامل مع البرامج الخارجية
  6. باختصار عن (ب)
  7. استنتاج


دعنا نحدد المصطلحات


Vim (يشار إليها فيما بعد باسم Vim) ، كما يعرف الكثيرون بالفعل ، محرر نصوص. بطبيعة الحال ، يعد تغيير ما كتبته مهمة مهمة للغاية ، وهي تمثل عقبة في إنتاجيتك ، لكن لسوء الحظ ، ليس كل شيء في هذه الحياة في غاية البساطة ، وأنت (كمستخدم) تحتاج غالبًا إلى وظائف أخرى.


بيئة العمل هي مجموعة من برامج تطوير البرمجيات. على سبيل المثال ، قد يحتوي على برنامج التحويل البرمجي ووحدة التحكم التفاعلية ومحرر لتحديد مواقع عناصر واجهة المستخدم الرسومية ومصحح الأخطاء والمزيد. المحرر هو مجرد قطعة صغيرة من هذا اللغز.


IDE هو مكان العمل بأكمله في مكان واحد. بالطبع ، هناك برامج مثل Emacs (يشار إليها فيما يلي باسم Emax) ، حيث يمكنك أنت نفسك أن تدرج فيها كل ما تريد بالمهارة المناسبة ، ولكن في أغلب الأحيان تكون حزمة جاهزة لك.


" لماذا أحتاج Wim إذا كان IDE يفعل كل شيء من أجلي؟"


في وقت سابق ، كان تصميمه حجة قوية ، لأنه بالنسبة للكثيرين هو أكثر ملاءمة من اختصارات لوحة المفاتيح الحديثة التي تشبه Emax متعددة أزرار التنقل وتحرير النص. ومع ذلك ، بفضل Neovim وغيرها من المشاريع مثل VSCodeVim ، فهو حرفيًا في كل مكان.


ومع ذلك ، هناك حجة أخرى أقوى - الأداء. غالبًا ما يحتوي IDE على قدر كبير من الوظائف التي لا تستخدمها ، وعمليات الخلفية التي تُحمّل النظام بكثافة. حتى إذا كان جهاز MacBook الخاص بك لا يصيح مثل مقاتلة من PyCharm أو لم يكن لديك التمرير في Visual Studio (وهو أمر مستحيل ، فأنت كاذب لي) ، ولا يذكرك مؤشر ترابط Emax الفردي الأول بأول Crysis أو STALKER ، لا تزال مسألة استهلاك الطاقة مطروحة عمر البطارية. تتميز مثل هذه البرامج في مجتمع Linux بمصطلح " meme ".



- لماذا ويم؟


لدي بالفعل مقال عن كل سحر هذا البرنامج. ومع ذلك ، فقد كتبه رجل تحت الانطباع بوجود لعبة جديدة بمستوى ذكاء في السنة الثانية (خمن السبب) التي أسفرت عن قدر ضئيل للغاية من المعنى فيها تشكلت ثقب أسود في مكانها. حسنًا ، كانت الصور المضحكة على الأقل ناجحة ...


ماذا يمكنني أن أقول عنه الآن ، بعد عام من الاستخدام الفعال؟


  1. إنه سريع جدا. نظرًا لطبيعة العرض ، فإن Wim لديه زمن انتقال أقل بكثير من المحررين الآخرين. بعد ذلك ، يبدو أن المحررين الآخرين لا يستجيبون ، أنا صامت بالفعل بشأن IDEs المذكورة أعلاه.
  2. استخدامه مشابه لمرور النفوس المظلمة الثالثة بعد الجزء الأول. في البداية ، كانت اللعبة صعبة وغير عادية ، حيث أصبحت اللعبة أسرع ، ولا يمكنك تصور العديد من اللحظات الصعبة بمساعدة مكون آر بي جي ، ولكنك تدرك بعد ذلك أن اللعبة قد أثبتت صحتها وأن جميع الرؤساء تقريبًا في المحاولة الثانية.
  3. عمليا لا تنفق الموارد وتعمل حتى على الخبز ، وهو أمر جيد للغاية بالنسبة للبطارية.

من حيث المبدأ ، لا يوجد شيء سيئ بصراحة في المحررين الآخرين ، لذا اترك هذا الخيار لتقديرك الشخصي. أنا مقتنع أنه يمكنك العثور على مقال مشابه لبرنامجك المفضل. على الرغم من أن نكون صادقين ، لا يمكن للمحررين على الإلكترون أن يجتازوا معيار كفاءة الطاقة.


في هذه المقالة ، سنأتي Wim إلى حالة قابلة للهضم للعمل الجاد ، كما نعلمه أن نكون أصدقاء مع بعض برامج التطوير التابعة لجهات خارجية. يرجى ملاحظة أنني سأتحدث فقط عن ما حدث لمواجهته شخصيًا ، وإذا كان لديك اقتراحات مثيرة للاهتمام ، فمرحباً بك في التعليقات.



أدخل مزحة حول المكونات


السلاح الرئيسي لتكوين صديقنا هي الإضافات. في الواقع ، هذه مجرد ملفات منفصلة برمز VimScript التي يتم تنفيذها عند تحميل ملف الإعدادات (~ / .vimrc أو ~ / .config / nvim / init.vim) باستخدام الأمر المصدر. إن استخدام الأقلام لتنزيل كل هذا أمر مؤلم ، لذا فإن عقول البشرية العظيمة جاءت مع مديري الحزم ... لـ Wim!


تتمثل المهمة الرئيسية لمدير الحزمة في تنزيل الإضافات المحددة من جيثب ، وتزويد المستخدم بواجهة مريحة لإدارتها ، وفي الواقع ، قم بتوصيلها عند تحميل Wim. هناك بالطبع مدراء من النوع البسيط (الذي يتعامل بشكل رئيسي مع النوع الثالث فقط) ، لكننا لن نعقد حياتنا كثيرًا.


سيكون لدينا جناح اليوم vim-plug . ولكن ، قبل أن تذهب لتثبيته ، تحتاج أولاً إلى إضافة سطرين إلى التكوين الخاص بك:


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


All Articles