وبلاگ شخصی
محمّدرضا
علی حسینی

جایی که تجربیات, علایق
و چیزهایی که یادگرفته‌ام را
با هم مرور می‌کنیم.

چطوری VIM را تبدیل به یک IDE واقعی کنیم؟

چطوری VIM را تبدیل به یک IDE واقعی کنیم؟

حتماً شما هم زیاد اسم vim را شنیده‌اید و شوخی‌هایی که با آن ساخته می‌شود را دیده‌اید. صد البته به احتمال خیلی زیاد خودتان هم از vim استفاده می‌کنید.

در این نوشته می‌خواهیم ببینیم که چطوری می‌توانیم vim را به یک IDE درست و حسابی تبدیل کنیم.

حواستان باشد که این نوشته را برای ویدیویی که با همین عنوان در کانال یوتیوبم قرار داده‌ام نوشته‌ام. فرض من این است که هم‌زمان با دنبال کردن مراحل ویدیو، برای بهتر فهمیدن و البته کپی‌پیست‌کردن نوشته‌ها از این متن استفاده می‌کنید. هرچند صرفاً با خواندن این نوشته هم می‌توانید به نتیجه‌ی نهایی برسید.

به علاوه بهتر است که یک نگاهی به مخزن هرکدام از پکیج‌ها بیندازید و از ویژگی‌های دیگر آن‌ها هم باخبر شوید. چون در ویدیو و این نوشته صرفاً به معرّفی آن‌ها و قابلیّت‌های اصلی‌شان بسنده کرده‌ام.

YouTube video

معرّفی 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

فایل نهایی 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 کارراه‌انداز تبدیل کردیم.

«نوشته‌های مرتبط»

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

«نوشته‌های ویژه»

«نوشته‌های محبوب»

«دیدگاه کاربران»