تنظیم ادیتور ویم برای برنامه نویسی [پایتون]

توی قسمت های اول و دوم گفتم چرا ویم خوبه و به چه دلایلی ازش استفاده می‌کنیم. شاید برای بعضی ها یه اجبار گاه گداری باشه، برای بعضی ها شبیه من یه فان باحال و یکی از ادیتورهای برنامه نویسی و برای بعضی ها بهترین ادیتور دنیا. توی این قسمت سعی می کنیم با استفاده از پلاگین ها و دیدن چند ترفند باحال ادیتور ویم، سیستم رو بهینه کنیم برای برنامه نویسی،‌ بخصوص پایتون. پایه اصلی این نوشته این مطلب است با تغییراتی و اضافه‌ها و کم هایی بر اساس چیزی که من باهاش راحتم و استفاده می‌کنم. https://www.aparat.com/v/WeyEv لینک تنظیم ادیتور ویم برای برنامه نویسی در آپارات و یوتیوب.نصب خود ویمتوی قسمت های قبلی که با ویم کار کردیم پس منطقا نصب شده (: اما بحث اینه که انتظار می ره ویم شما نسبتا جدید باشه، حداقل بالاتر از ۷.۳.➜ ~ vim --version VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Apr 12 2020 17:46:58)اگر روی مک هستین و ورژن شما پایینتر است، شاید با brew update و brew install vim بتونی وضع رو بهتر کنین. روی لینوکس ها احتمالا به اندازه کافی به روز هستین.پلاگین‌‌های ویمویم الان یه شبیه یه پلتفرم شده که روش کلی پلاگین نصب می کنین و کارهایی رو می کنه که شما دوست دارین. نصب پلاگین‌های از طریق مدیراکستنش‌ها انجام می‌شه که یکی از مرسوم‌هاش Vundle است. نصبش ساده است. واندل رو کلون می کنینش توی تنظیمات پلاگین های ویم؛ یه چنین چیزی:git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vimحالا برای شروع تنظیمات کافیه یه فایل به اسم .vimrc توی هوم درست کنین:touch ~/.vimrcو توش تنظیمات واندل رو اضافه کنین:set nocompatible &quot required filetype off &quot required &quot set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() &quot alternatively, pass a path where Vundle should install plugins &quotcall vundle#begin('~/some/path/here') &quot let Vundle manage Vundle, required Plugin 'gmarik/Vundle.vim' &quot add all your plugins here (note older versions of Vundle &quot used Bundle instead of Plugin) &quot ... &quot All of your Plugins must be added before the following line call vundle#end() &quot required filetype plugin indent on &quot required set encoding=utf-8بقیه کارها واضحه: اضافه کردن پلاگین ها و تنظیم کردن چیزها و یاد گرفتن شورتکات ها.. الان اگر برین توی ویم و این دستور رو اجرا کنین، واندل پلاگین هایی که بهش گفتین رو براتون نصب یا به روز می کنه.:PluginInstallحالا وقتشه که قدم به قدم پیش بریم.استفاده خوبقبلا هم گفتم. خوبه فیچرهای چیزهایی که ازشون استفاده می کنین رو بگیریم. معمولا آدم ها به شکل تجربی یکسری فیچر اولیه رو یاد می گیرن تا کارشون راه بیافته و بعد حرفه ای تر نمی شن. خوبه اگر از چیزی استفاده می کنین، کم کم فیچرهای مناسبش رو یاد بگیرین. مثلا در مورد ویم، استفاده کمتر از ماوس یا استفاده بیشتر از :sp و :vs و کامندهایی که حرفشون رو زدیم مثل بافرها و ..تا کردن کدتا کردن؟ انگلیسی ها می گن fold. در حالت عادی با za فولد می شد ولی خیلی ها می ذارن روی space.&quot Enable folding set foldmethod=indent set foldlevel=99البته دقت کنین که فولد بر اساس ایندنت انجام می شه. برای پیشرفته‌تر کردن با درک زبان و … SimpylFold رو سرچ کنین.فرمت بهتر فایل برای پایتونبرای ایندنت کردن بر اساس پپ۸، اینها رو اضافه کنین:au BufNewFile,BufRead *.py \set tabstop=4 \set softtabstop=4 \set shiftwidth=4 \set textwidth=79 \set expandtab \set autoindent \set fileformat=unixو برای ایندنت خوب اتوماتیک:Plugin 'vim-scripts/indentpython.vim'و چنین چیزی برای مشخص کردن اسپیس های اضافیau BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/ highlight BadWhitespace ctermbg=red guibg=darkredاتوکامپلیتاتوکامپلیت ایده ها و شکل های مختلفی داره. مثلا ممکنه فانکشن های اصلی رو بدونه یا ممکنه متغیرها رو زیر نظر بگیره و … گزینه اصلی خیلی ها برای مجموعه ای از زبان‌ها ِYouCompleteMe است که باید مستقل نصبش رو پیش برین. با این به واندل اضافه اش کنید:Bundle 'Valloric/YouCompleteMe'و بعد از نصبش چند تا تغییر ریز هم بدیم:let g:ycm_autoclose_preview_window_after_completion=1 map g :YcmCompleter GoToDefinitionElseDeclarationویرچوال انوهامعلومه که ویم درکی از ویرچوال انوها نداره. برای ایجاد کردن این درک می تونیم اینکار رو بکنیم:&quotpython with virtualenv support py << EOF import os import sys if 'VIRTUAL_ENV' in os.environ: project_base_dir = os.environ['VIRTUAL_ENV'] activate_this = os.path.join(project_base_dir, 'bin/activate_this.py') execfile(activate_this, dict(__file__=activate_this)) EOFچک کردن سینتکسپلاگین داریم دیگه...Plugin 'vim-syntastic/syntastic' Plugin 'nvie/vim-flake8' let python_highlight_all=1 syntax onتنظیم رنگ هایک نگاه خودتون بندازین... سخته انتخاب کرده و من هی عوض می کنم. ولی در نهایت باcolorscheme desertدرخت فایل هااوه اوه.. بعضی ها عاشق اینن بعضی ها نمی دونن اصلا چرا هست! نرد تری مرسمترین است:Plugin 'scrooloose/nerdtree' Plugin 'jistr/vim-nerdtree-tabs' let NERDTreeIgnore=['\.pyc$', '\~$'] &quotignore files in NERDTreeمی تونین با :NERDTree فعالش کنین ، با o در بافر جدید باز کنین. با t در تب جدید، با i در اسپلیت افقی و با s در معودی. p می ره دایرکتوری بالا و r ریفرش می کنه. بقیه اش؟ ? (: بستن؟ :NERDTreeCloseقرتی بازی های آخرمثلاset number set showmatch set history=1000 set undolevels=1000 set wildignore=*.swp,*.bak,*.pyc set visualbell set noerrorbellsو پلاگین هایی مثلPlugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}