چطوری VIM را تبدیل به یک IDE واقعی کنیم؟
حتماً شما هم زیاد اسم vim را شنیدهاید و شوخیهایی که با آن ساخته میشود را دیدهاید. صد البته به احتمال خیلی زیاد خودتان هم از vim استفاده میکنید.
در این نوشته میخواهیم ببینیم که چطوری میتوانیم vim را به یک IDE درست و حسابی تبدیل کنیم.
حواستان باشد که این نوشته را برای ویدیویی که با همین عنوان در کانال یوتیوبم قرار دادهام نوشتهام. فرض من این است که همزمان با دنبال کردن مراحل ویدیو، برای بهتر فهمیدن و البته کپیپیستکردن نوشتهها از این متن استفاده میکنید. هرچند صرفاً با خواندن این نوشته هم میتوانید به نتیجهی نهایی برسید.
به علاوه بهتر است که یک نگاهی به مخزن هرکدام از پکیجها بیندازید و از ویژگیهای دیگر آنها هم باخبر شوید. چون در ویدیو و این نوشته صرفاً به معرّفی آنها و قابلیّتهای اصلیشان بسنده کردهام.فهرست مطالب
معرّفی vim در ۱۰ ثانیه
vim یک ویرایشگر متن است که برای بهبود ویرایشگر قدیمیتر که اسمش vi بود ساخته شد. vim به خاطر سبک و در عین حال قدرتمند بودنش معروف است. به علاوه تقریباً همهجا در دسترس است.IDE یعنی چی؟
IDE مخفف عبارت Integrated development environment است که به فارسی میشود محیط توسعهی یکپارچه. هر IDE یک نرمافزار است که ابزارهای زیادی را برای توسعهی نرمافزار مثل ویرایشگر کد، غلطیابی، دیباگ و… در اختیار توسعهدهنده قرار میدهد. خب این از تعاریف سریع ما. حالا برویم سراغ کار اصلیمان و دستی به سر و گوش vim بکشیم.اضافهکردن Syntax Highlighting به vim
اوّلین کاری که باید بکنیم اضافهکردن syntax highlighting به vim است. برای این کار باید فایل تنظیمات vim را ویرایش کنیم. اسم این فایل تنظیمات.vimrc
است. اینکه این فایل کجا قراردارد وابسته به سیستم عامل شما است. امّا عموماً در لینوکس این فایل در مسیر home شما قرار دارد (همان جایی که با نوشتن علامت ~ در ترمینال میتوان به آن دسترسی داشت).
باید درون این فایل عبارت زیر را بنویسیم:
syntax on
با این کار قابلیّت syntax highlighting به vim اضافه میشود.
تنظیمات اوّلیهای که حتماً باید درون vim داشته باشید را میتوانید از بخش زیر بردارید و درون فایل .vimrc
قرار بدهید. توضیحات مختصرشان را درون ویدیو آوردهام. برای توضیحات دقیقتر هرکدام هم میتوانید سری به اینجا بزنید.
set nocompatible syntax on set ruler set number set showcmd set incsearch set hlsearch set backspace=indent,eol,start set expandtab set tabstop=4 set softtabstop=4 set shiftwidth=4
فعّالکردن موس در vim
برای اینکه بتوانید از موس در vim استفاده کنید، کافی است که خط زیر را به .vimrc
اضافه کنید:
set mouse=a
نصب یک package manager برای vim
برای نصب oh my vim، اگر به wget دسترسی دارید میتوانید دستور زیر را اجرا کنید. در غیر این صورت روشهای دیگر نصب آن را که در مخزن گیتهابش قرار دارند را میتوانید به کار ببرید.
wget --no-check-certificate -O- https://raw.github.com/gawel/oh-my-vim/master/tools/install.sh | sh -
نصب یک patched font
برای خوشگلتر شدن vim باید یک patched font هم نصب کنیم. در اینجا ما از فونت Menlo استفاده میکنیم. روش نصبش خیلی آسان است و در مخزن گیتهابش توضیح داده شده است.
کافی است فایلهای ttf آن را دانلود کنید و به فونتهای سیستم عامل اضافهاش کنید.
بعد از نصب فونتها، باید به تنظیمات ترمینال خودتان بروید و فونت آن را به Menlo تغییر بدهید.
خوشگلکردن vim
برای اینکه vim را یکم خوشگلتر کنیم باید پکیجهای زیر را نصب کنیم.
اوّلین پکیج، پکیج vim-colors-solarized است. برای نصب آن باید دستور زیر را اجرا کنید:
oh-my-vim install altercation/vim-colors-solarized
بعد باید خطوط زیر را به فایل تنظیمات vim اضافه کنیم:
colorscheme solarized set background=dark
میتوانید مقدار light
را به جای dark
امتحان کنید و یا اگر خوشتان نیامد این دو خط را بیخیال شوید.
به علاوه اگر دوستداشتید میتوانید از molokai به جای solarized استفاده کنید.
پکیج بعدیای که باید سراغش برویم، پکیج vim-airline است. ابتدا باید آن را نصب کنیم:
oh-my-vim install vim-airline/vim-airline
بعد از نصب این، باید vim-airline-themes را نصب کنیم تا بتوانیم از پوستههای مختلف airline استفاده کنیم.
oh-my-vim install vim-airline/vim-airline-themes
پس از این کار باید مقادیر زیر را درون فایل تنظیمات vim قرار بدهیم:
set laststatus=2 let g:airline_detect_paste=1 let g:airline#extensions#tabline#enabled = 1 let g:airline_theme='luna'
به جای luna
میتوانید هرکدام از مقادیری که برای airline themes ساخته شده است را قرار بدهید.
یک چیزی که من در ویدیو فراموشکردم و باعث میشود که نتیجهی نهایی خیلی زیباتر شود و اصلاً هدف اصلی از نصب فونت آن بود، افزودن خط زیر به تنظیمات است:
let g:airline_powerline_fonts = 1
این کار باعث میشود که فلشهای خوشگلتر و بخش توضیحات زیباتری داشته باشیم.
رفع خطای oh my vim
پس از نصب oh my vim احتمالاً با یک پیام خطای بزرگ مقع بازکردن vim مواجه میشوید. برای رفع این خطا کافی است که اوّل به آدرس زیر بروید:
cd ~/.vim/bundle/oh-my-vim/plugin/
و سپس درون فایل ohmyvim.vim
تابع: OhMyVimProfiles
را به مقدار زیر تبدیل کنید:
function! OhMyVimProfiles() for profile in g:profiles "let a:filename="~/.vim/bundle/oh-my-vim/profiles/".profile.".vim" execute("source ~/.vim/bundle/oh-my-vim/profiles/".profile.".vim") endfor endfunction
نمایش ساختار پروژه
برای اینکه بتوانیم لیست فایلها را مشاهده کنیم و از بین آنها فایلهای جدید را انتخاب کنیم، به پلاگین nerdtree احتیاج داریم.
oh-my-vim install scrooloose/nerdtree
بعد از آن هم باید پلاگین ned tree tabs را نصب کنیم:
oh-my-vim install jistr/vim-nerdtree-tabs
حالا اگر خط زیر را به تنظیمات vim اضافه کنیم، با زدن دکمههای \t
درخت فایلها باز و بسته میشود.
nmap <silent> <leader>t :NERDTreeTabsToggle<CR>
اگر چندین فایل را به این شکل بازکردید، برای چرخیدن بین آنها میتوانید از کلیدهای ترکیبی: Ctrl+o
و Ctrl+i
استفاده کنید.
افزودن قابلیّت بررسی syntax
ما باید اوّل از همه پلاگین syntastic را نصب کنیم.
oh-my-vim install vim-syntastic/syntastic
بعد از نصب آن باید linter زبانهایی که دوستداریم را نصب کنیم. مثلاً برای پایتون میتوانید pylint را نصب کنید. راهنمای نصبش در سیستم عامل های مختلف در وبسایت خودش وجود دارد.
بعد از نصب برای تغییر علامتهای خطهایی که دارای خطا یا اخطار هستند، کد زیر را به فایل تنظیمات اضافه کنید.
let g:syntastic_error_symbol = '✘' let g:syntastic_warning_symbol = "▲" augroup mySyntastic au! au FileType tex let b:syntastic_mode = "passive" augroup END
به علاوه تنظیمات زیر را هم خوب است که اضافه کنید:
set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0
و حال وقت این است که linter را به syntastic معرّفی کنیم. برای این کار باید کد زیر را به تنظیمات اضافه کنیم:
let g:syntastic_python_checkers = ['pylint']شما میتوانید به جای
python
اسم هر زبانی که دوستدارید را بنویسید. بعد از علامت مساوی هم یک لیست از linter های آن زبان را باید قرار بدهید.
افزودن auto-complete
ما اوّل از همه باید پکیج you complete me را نصب کنیم:
oh-my-vim install ycm-core/YouCompleteMeبعد باید نیازمندیهای این پکیج را نصب کنیم. برای این پکیج به ابزارهای زیر نیاز داریم. میتوانید آنها را به هر شکلی که دوستداشتید نصب کنید (در مخزن گیتهاب خود پکیج روشهای مختلف را آورده است):
- gcc-c++
- cmake
- make
- python3-devel
cd ~/.vim/bundle/YouCompleteMe
حالا زمان این است که youCompleteMe را نصب کنیم.
برای این کار باید دستور زیر را اجرا کنید:
python3 install.py --all
در اینجا ممکن است که پیامی به شما نمایش داده بشود و از شما بخواهد که ابتدا دستور زیر را اجرا کنید:
git submodule update --init --recursive
بعد از اجرای این دستور دوباره install.py
را فراخوانی کنید.
افزودن قابلیّت کار با گیت به vim
ما به دو تا پکیج برای افزودن قابلیّت کار با گیت نیاز داریم. اوّلین پکیج، vim-gitgutter است که قابلیّتهای زیادی مثل نمایش خطوط اضافه شده و … را به ما اضافه میکند. لیست کامل قابلیّتهایش را میتوانید در خود مخزن آن ببینید.
oh-my-vim install airblade/vim-gitgutter
بعد از آن هم باید پکیج fugitive را نصب کنیم تا بتوانیم از داخل vim به دستورات git دسترسی داشته باشیم (شما میتوانید میزان خستگی ذهنی من را در پایان ویدیو از تلفّظ عجیب و غریبی که از اسم این بنده خدا داشتم و تعجّب خودم از آن بفهمید :) ) .
oh-my-vim install tpope/vim-fugitive
بعد از نصب این باید خط زیر را به تنظیمات اضافه کنیم:
let g:airline#extensions#hunks#non_zero_only = 1
حالا میتوانیم داخل vim به دستورات git دسترسی داشته باشید. کافی است طبق الگوی زیر عمل کنید.
به جای اینکه دستور git status
را درون ترمینال بزنید، درون vim دستور زیر را بزنید:
:Gstatus
به جای status
میتوانید هرکدام از دستورات git را قرار بدهید. توضیحات بیشتر را میتوانید در خود مخزن گیتهاب این پکیج ببینید.
افزودن ذخیرهسازی خودکار
برای اینکه تغییراتمان به صورت خودکار در vim ذخیره شوند، میتوانیم از پکیج vim auto save استفاده کنیم.
برای این کار اوّل باید خود پکیج را نصب کنیم:
oh-my-vim install vim-auto-save
بعد برای اینکه به صورت خودکار این قابلیّت همیشه فعّال باشد، باید خط زیر را به .vimrc
اضافه کنیم:
let g:auto_save = 1
The form you have selected does not exist.
vimrc.
من بعد از تمامی این تغییرات (و البته حذف کردن بخشی که خودم زیاد ازش خوشم نمیآمد) این شکلی است:
set nocompatible syntax on set ruler set number set showcmd set incsearch set hlsearch set backspace=indent,eol,start set expandtab set tabstop=4 set softtabstop=4 set shiftwidth=4 set mouse=a "colorscheme solarized set background=dark set laststatus=2 let g:airline_detect_paste=1 let g:airline#extensions#tabline#enabled = 1 let g:airline_theme='luna' nmap <silent> <leader>t :NERDTreeTabsToggle<CR> hi clear signColumn augroup mySyntastic au! au FileType tex let b:syntastic_mode = "passive" augroup END set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* let g:airline_powerline_fonts = 1 let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 let g:syntastic_python_checkers = ['pylint'] let g:airline#extensions#hunks#non_zero_only = 1 let g:auto_save = 1
خب تبریک میگم. الان ما vim را از یک ویرایشگر متن ساده به یک IDE کارراهانداز تبدیل کردیم.
یا حرفهای شو یا برنامهنویسی را رها کن.
چطور میشود در بازار کار خالی از نیروی سنیور ایران، بدون کمک دیگران و وقت تلفکردن خودت را تبدیل به یک نیروی باتجربه بکنی؟
پاسخ ساده است. باید حرفهای بشوی. چیزی که من در این کتاب به تو یاد خواهم داد.
ممنون از این پست
ولی عقلانیش انگار اینه که بیخیالش بشیم بریم یک آی دی ای درست درمون پیدا کنیم
کاملا حق …
سلام
در ویندوز فایل .vimrc کجا قرار داره؟
اگر از WSL استفاده میکنید که مسیرش همان مسیری است که برای لینوکس وجود دارد.
خیلی ممنون فیلمتون رو داخل چنل یوتوب دیدیم عااالی بود
ممنون.
سلام
1.نام کاربری تو نوار This Pc یا my computer بنویس.
2.بعد از باز شدن پنجره مورد نظر یک فایل با این نام vimrc_ ایجاد کن.
3. با یک ویرایشگر متن باز کن
4.بعد از باز کردن فایل اینو source $VIMRUNTIME/defaults.vim در اولین خط بنویس اگر نوشته نشه تنظیماتی که در فایل نوشتی به صورت کامل اجرا نخواهد شد.