payam naghdy
payam naghdy
خواندن ۵ دقیقه·۵ سال پیش

ویم برای برنامه نویس ها

کار با تکست ادیتور VIM با کانفیگ پیشفرض بسیار مشکل است‌، شاید بخاطر سختی ها و کلید های طولانی و عجیب انتخاب اول خیلی ها نیست و تا زمانی که تنها انتخاب این ادیتور نباشد به سراغش نمی‌روند.

این مطلب اولین نوشته منه و احتمالا بسیار غیر حرفه ای و اماتوریه اگه جایی مشکلی بود چه از نظر نگارشی چه از نظر علمی خوشحال میشم بگید که اصلاح کنم.
فایل کامل این اموزشم داخل گیت هاب خودم هست اگه دوست داشتید و استفاده کردید استار گیت هاب یادتون نره .
اگه سوالیم داشتید خوشحال میشم بتونم کمک کنم.

چرا باید کار با VIM را یاد بگیریم ؟

اول این که در برخی موارد ویم تنها گزینه موجود است مثلا اگر نیاز داشته باشیم روی سرور برخی کانفیگ ها را تغییر دهیم عموما ویم تنها گزینه ای است که در اختیار داریم. ( البته سرور های لینوکسی :) )

مورد دوم این که این ادیتور بسیار سبک و سریع است و به صورت پیشفرض روی سیستم عامل های یونیکس بیس نصب است.

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

پیش از خواندن ادامه مطلب اصول اولیه کار با ویم را یاد بگیرید

پیش از این که به سراغ کانفیگ این ادیتور برویم اصول اولیه کار با ویم را از لینک زیر بخوانید تا در ادامه مقاله به مشکلی با کلمات استفاده شده بر نخورید.

https://www.howtoforge.com/vim-basics

نصب Vundle

برای اضافه کردن پلاگین های مورد نیاز به ویم به یک پلاگین منیجر نیاز داریم که انتخاب من Vundle بوده (البته موارد دیگری نیز موجود است که می‌توانید از آن ها نیز استفاده نمایید)

آموزش نصب Vundle به صورت کامل در ریپوی گیت هابشان موجود است که برای اطلاعات بیشتر می‌توانید مراجعه کنید.

مراحل نصب :

  1. ریپوی گیت vundle را کلون کنید.
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

۲.در دایرکتوری هوم (کانفیگ برای یوزر) فایل .vimrc را با دستور زیر بسازید.

touch .vimrc

۳. موارد زیر را در ابتدای فایل کپی کنید.

set nocompatible " be iMproved, required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required

۴.برای بررسی نیز می‌توانید یکی از کامند های vundle را در مود کامند ویم تست کنید مثلا:

:PluginInstall


اضافه کردن پلاگین ها

اولین پلاگین auto pairs.

این پلاگین برای قرار دادن پرانتز ، براکت، کوت و بقیه چیز هایی که نیاز دارند بسته شوند با اضافه کردن پلاگین auto pairs با قرار دادن یکی، جفت آن به صورت اتوماتیک قرار میگیرد.

نمونه های ورودی و خروجی را هم می‌توانید در ریپوی گیت هاب این پلاگین مشاهده نمایید.

برای اضافه کردن به ویم:

  1. پلاگین را به فایل .vimrc اضافه کنید.
Plugin'jiangmiao/auto-pairs'

۲.ویم را ری استارت کنید و دستور زیر را در مود کامند بزنید.

:PluginInstall

تم gruvbox.

تم های بسیاری برای ویم موجود است که طبق سلیقه خودتان می‌توانید یکی را انتخاب کنید. در این مطلب من نحوه اضافه کردن تم محبوب خودم را توضیح خواهم داد.

Dark gruvbox
Dark gruvbox



نحوه تغییر تم:

در حقیقت تم ها نیز در ویم پلاگین هستند و اضافه کردنشان مانند قسمت قبل میباشد.

Plugin 'morhetz/gruvbox'
colorscheme gruvbox
set background=dark
let g:gruvbox_contrast_dark = 'high'

خط اول مربوط به اضافه کردن پلاگین به vundle است در خط بعد مشخص می‌کنیم که می‌خواهیم از تم gruvbox استفاده کنیم در اینجا من از تم دارک و کنتراست high استفاده میکنم.

مانند دیگر پلاگین ها نیاز داریم که یک بار ویم را ری استارت کرده و دوباره در مود کامنت PluginInstall‌ را وارد کنیم.


پلاگین NERDTree

یکی از مشکلات ویم جابه‌جا شدن بین فایل های مختلف پروژه است که این پلاگین یک پنل (به صورت پیشفرض سمت راست صفحه) به ویم اضافه می‌کند که میتوان از طریق آن بین فایل های پروژه جابه‌جا شد.

نحوه اضافه کردن:


Plugin 'scrooloose/nerdtree'
autocmd vimenter * NERDTree

به صورت پیشفرض nerdtree هنگام باز شدن ویم اجرا نمیشود و نیاز داریم در مود کامند NERDTree را تایپ کنیم.

خط دوم برای این است که در زمان اجرای ویم این کامند اتوماتیک اجرا شود.

پلاگین comentary :

کامنت کردن چند خط از کد در ویم کار بسیار مشکلی است و برای هر زبان باید روند جدایی طی شود این به کمک این پلاگین میتوان یک بلاک از کد را در مود ویژوال ویم با انتخاب بلاک و زدن gc کامنت کرد.


Plugin 'tpope/vim-commentary'
filetype plugin on

پلاگین فایل تایپ را هم حتما روشن کنید که برای زبان های مختلف قابل استفاده باشد.

زبان های مختلف:

از این به بعد را بسته به زبان های مورد استفاده خود اضافه کنید و اگر زبانی پوشش داده نشده بود به راحتی می‌توانید پلاگین های مناسبش را پیدا کنید.

اولین بخش html و css

برای های لایت شدن سینتکس از پلاگین های زیر استفاده کنید

Plugin 'hail2u/vim-css3-syntax'
Plugin 'gorodinskiy/vim-coloresque'
Plugin 'tpope/vim-haml'


پلاگین جادویی emmet

یکی از پلاگین های عالی و پر کاربرد ویم که کار را برای فرانت اند دولپر ها بسیار اسانتر کرده است که نحوه کار ان را در گیف های بعد خواهید دید.



برای اضافه کردن این پلاگین تنظیمات زیر را به فایل vimrc اضافه کنید.

Plugin 'mattn/emmet-vim'
let g:user_emmet_install_global = 0
autocmd FileType html,css EmmetInstall
let g:user_emmet_leader_key=','

Live Server :

در طراحی فرانت اند همیشه داشتن یک لایو سرور که تغییرات را در لحضه (بدون نیاز به ریلود) نمایش دهد کار را بسیار لذتبخش میکند.

پلاگین bracey هر فایل Html ای که با ویم باز شود را در لحظه لود کرده و نمایش میدهد و با تغییر فایل به صورت خودکار ریلود میکند.

حال نصب bracey

ابتدا مطمئن شوید که nodejs و npm روی سیستم شما نصب است سپس

خط زیر را به .vimrc اضافه کنید و بعد از ری استارت کردن ویم در مود کامند PluginInstall را بزنید.

Plugin 'turbio/bracey.vim'

سپس در ترمینال دستورات زیر را وارد نمایید.

cd ~/.vim/bundle/bracey.vim
npm install --prefix server

و برای روشن شدن کافیست در مود کامند Bracey را تایپ کنید و برای متوقف شدن BraceyStop

python

syntax enable
set tabstop=4
set shiftwidth=4
set expandtab
set number
filetype indent on
set autoindent
Plugin 'davidhalter/jedi-vim'
Plugin 'raimon49/requirements.txt.vim', {'for': 'requirements'}

javascript

" vuejs
Plugin 'posva/vim-vue'
Plugin 'leafOfTree/vim-vue-plugin'
Plugin 'jelera/vim-javascript-syntax'

ruby

Plugin 'tpope/vim-rails'
Plugin 'tpope/vim-rake'
Plugin 'tpope/vim-projectionist'
Plugin 'thoughtbot/vim-rspec'
Plugin 'ecomba/vim-ruby-refactoring'





computerprogrammingبرنامه نویسیdevelopingdevelpoer
شاید از این پست‌ها خوشتان بیاید