نصب پلاگین و شخصی سازی  ادیتور  vim

https://github.com/preservim/nerdtreeسلام! ببخشید این مدت طولانی نبودم درگیر خیلی کارها بودم و ممکنه نبود من طولانی تر هم بشه به هر حال امیدوارم عذر خواهی بنده رو بپذرید.در این مقاله قرار ادیتور ویم رو شخصی سازی و زیبا کنیم که بتونید ازش نهایت استفاده رو ببرید پس با من همراه باشید:)( در این پست از شما انتظار میره بلد باشید چطور با ویم کار کنید و اینکه هر کلید و یا رجکس چیکار میکنه ( regex) )خب اول بزارید بگم قیافه اصلی ویم چه شکلیه :بله درست دید ویم در حالت دیفالت به این شکله و یک تکست ادیتور ساده است و وقتی شما با سیستم های یونیکس بیس کار میکنید انتظار میره که حداقل ویم رو بلد باشید!!حالا ویم وقتی تنظیم بشه چه شکلی میشه ؟؟ این شکلی میشه وتبدیل به یک ادیتور تمام اعیار میشه :هرچند که این با سلیقه بنده ست و انتظار نمیره که شما این رو دوست داشته باشید.ولی خب همینم برای شروع خوبه!خب این آموزش در درجه اول برای کسانی هستند که سیستم لینوکسی دارن!! اول از همه شما باید فایل vimrc رو در دایکتوری هوم خودتون بسازید: (به صورت زیر)touch ~/.vimrcاگر دقت کرده باشید این فایل مخفی هست .حالا که فایل رو ساختید با دستور زیر چک کنید که این فایل موجود هست یا نه :file ~/.vimrc یا هر طور دیگه صلاح میدونید.اگر این فایل وجود داره از و چیزی داخلش نیست؛ لازم نیست یکی دیگه بسازید و اگر هم در داخل فایل اصلی خودتون تنظیمات ست کردید فقط کافیه از فایل اصلی خودتون یک کپی بگیرید که تنظیمات قبلی خودتون رو داشته باشید:)حالا که فایل رو ساختیم وقتش رسیده که یکم شخصی سازیش کنیم تا بهتر بشه برای اینکار با خود ادیتور ویم فایل رو به صورت زیر باز کنید: vim ~/.vimrcحالا باید چند تا خط رو به این ادیتور اضافه کنیم.برای اینکار وارد insert مود بشید.من دوست دارم مثل یک ادیتور واقعی شماره خط رو کنار هر خط بنویسه. پس بنویسید:set number اگر دوست ندارید میتونید با دستور :set nonumberخط هایی که میبینید رو بردارید.حالا برای اینکه ببینیم کار میکنه یا نه یک بار فایل رو سیو میکنیم و ازش خارج میشیم و دوباره وارد میشیم(دیگه این روند رو هر بار توضیح نمیدم )‌.و میبیند داره کار میکنه اگر نکرد میتونید از زیر همین پست از من کمک بگیرید.برای اینکه اون خطی که هستید هایلایت بشه دستور زیر رو اضافه کنید:set cursorlineحالا میبنید که خطی که توش هستید یک حالت هایلایت بهش اضافه میکنه.این چند تا خط هم اختیاری اگه دوست داشتید میتونید اضافه کنید::set tabstop=4 :set expandtab :set softtabstop=4:set shiftwidth=4:set textwidth=80:set showmatch خب من دوست دوست ندارم برای سرچ کردن از حروف بزرگ و کوچک استفاده کنم پس برای همین دستور زیر هم وارد کنید:( مطمعنا شما هم دوست ندارید‌!!!‌):set ignorecaseخب وقتشه ک یکم به کد های خودمون ایندنت (‌indent) اضافه کنیم برای همین دستور های زیر هم اضافه کنید::set autoindent خب کد بالا باعث میشه که اتوماتیک ایندنت کنه.من برنامه نویسه زبان سی هستم ( سی خالی !! نه سی پی پی !!)برای همین برای خودم ایندنت های زبان سی رو فعال کردم ( کد زیر ) ::set cindentاینطور میتونیم از ایندنت های زبان سی هم استفاده کنیم.خب حالا اگر دقت کرده باشید وقتی میخوایم ویم رو به دوقسمت عمودی یا افقی تقسیم کنیم یک حالت مزخرف و بدی میده برای همین کد زیر رو استفاده کنید::set splitbelow:set splitrightبهتر شد نه؟؟ قراره بهتر از این هم بشه !!خب تا اونجایی که یادم بود یک ادیتور سینکس هایلایتینگ داره درست ؟ پس ما هم اون رو به ویم اضافه میکنیم که از حالت سرد و خشک بودنش در بیاد!(‌پلاگین برای همچین حالتی هست اما نمیخوایم زیاد ویم رو سنگین کنیم ) کد زیر رو بزنید::syntax enableفقط یه چیزی یادتون نره اینها رو تو فایل vimrc بنویسید وذخیره کنید و بعد بیاید بیرون وبعد دوباره وارد بشید =)خب ما قرار پلاگین و اینجور چیز ها هم به ویم اضافه کنیم و پس یه جورایی باید به ویم بفهمونیم که باید پلاگین های خودش رو بر روی فایل ها فعال کنه پسسسسس کد زیر لطفا!!!::filetype plugin onخب برای اینکه ویم بتونه به صورت دقیق از utf-8 استفاده کنه و بتونیم یکی از پلاگین هایی دارم رو فعال کنیم کد زیر رو بزنید::set encoding=UTF-8خب این ها برای فعال سازی چند تا فیچر ساده و از پیش پا افتاده بودن حالا وقتشه بریم سراغ میانبر ها ( keybindings )میانبر ها!ما میتونیم در ویم از دستورات ترمینال( دقت کنید گفتم دستورات ) هم بهره ببیریم البته باید با کامند زیر این دستور رو استفاده کنیم::!خب این خیلی وقتگیره وقتی بهش دقت کنید میفهمید که وقت ندارید هر دقیقه اون دستور رو بزنید پس برای همین برای اینکار من یه ‍ میانبر درست کردم :map <Leader><Leader> :!خب اول باید بدونید کلید لیدر چیه؟؟؟؟ کلید لیدر در ویم در حالت دیفالت ویم کلید لیدر بک اسلش هست (\)برای همین اگر دوبار پشت سر هم بک اسلش رو بزنیم میتونیم از دستورات ترمینال بهر ببریم.گاهی اوقات شاید لازم باشه ویم رو به صورت عمودی یا افقی نصف کنیم برای همین از میانبر زیر استفاده میکنیم:nnoremap <leader>vv :vsplit<CR>nnoremap <leader>hh :split<CR>دستور اول با زدن کلید لیدر (‌\) و دوبار vv صفحه رو عمودی نصف میکنه.دستور دوم با زدن کلید لیدر(\) و دوبار hh صفحه افقی نصف میکنه.میانبر های دیگری هم گذاشتم که بعد از اینکه پلاگین ها رو گذاشتیم بهتون میگم چیکار کنید .پلاگین ها!الان وقتشه بریم سراغ پلاگین های ویم !!!!من عاشق این بخشم پس بزن که بریم !شما میتونید به صورت دستی پلاگین ها رو نصب کنید که اینکار برای آدم های تکراری و بی حوصله و بیکاره یا اینکه یه پلاگین منیجر نصب کنید که بتونید بقیه پلاگین ها رو نصب کنید!کدومش ؟؟ پلاگین منیجر!!ما مقداری زیادی پلاگین منیجر داریم اما به نظرم راحت ترین و سبک ترینشون vim-plug هست که خیلی فوق العاده ست.برای اینکه بتونیم از vim-plug باید اول نصبش کنیم که خیلی ساده ست.لینک گیتهاب ویم-پلاگ :https://github.com/junegunn/vim-plugیا اگر هم دوست ندارید اونو بخونید بیاید خودم بهتون یاد میدم=) البته به ترتیب باید انجام بدید.وارد ترمینال بشید دستور زیر رو کپی پیست کنید تو ترمینال:( همش رو باهم کپی پیست کنید)curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vimصبر کنید نصب بشهحالا کد های زیر رو وارد vimrc خودتون کنیدcall plug#begin() call plug#end()نکته:پلاگین های خودتون باید بین اون دو تا تابع باشنهیچ کلید میانبر و یا تنظیماتی که من اون بالا ها بهتون گفتم نباید بین ایم دو تابع باشنخب حالا میریم پلاگین ها رو تک تک نصب میکنیم و توضیحی هم درموردشون میدم.nerdtree https://github.com/preservim/nerdtree این پلاگین یک حالت اکسپلور بهتون میده و میتونید مثل vscode خراب شده و کند دنبال فایل های خودتون بگردیدبرای فعال شدن این پلاگین رو باید اضافه کنید بین اون دو تابعی که بالاتر گفتم : Plug 'scrooloose/nerdtree'خب حالا وقتی دستور بالا رو بالای اون دو تابع گذاشتید فایل رو سیو کنید و از ویم خارج بشید و بعد وارد ویم بشید.بعدش در حالت کامند مود دستور زیر رو بنویسید.تا پلاگین نصب بشه .:PlugInstallحالا از کجا بفهمیم پلاگین نصب شده؟؟ شما تقریبا با همچین چیزی روبرو میشید:بعدش باید دوباره از ویم خارج بشید و وارد ویم بشید تا پلاگین فعال بشه.راستی nerdtree یه همچین چیزیه :خب حالا وقتشه یکم nerdtree تنظیم کنیم که به بهترین حالت ممکنه ازش استفاده کنیم!اگر دقت کرده باشید وقتی وارد ویم میشید nerdtree درحالت عادی بسته ست و باید وارد کامند مود بشید که صداش بزنید پس کد زیر رو بزنید تا وقتی وارد ویم شدید به صورت همیشگی باز باشه ( بعد از call plug#end باید بنویسید‌):autocmd VimEnter * NERDTree حالا وقتی دوباره وارد ویم بشید میبینید که بله NERDTREE باز شده اما یه نکته منفی وجود داره ! اونم اینه که وقتی هرچیزی رو باز میکنید curser در سمت چپ یعنی روی فایل و دایرکتوری ها هستش و این خیلی آزار دهنده ست و نمیتونید هر دفعه از سر کد بپریم رویه nerdtree یا بر عکسش پس برای همین این دستور زیر رو بزنید تا درست بشه و curser رویه صفحه اصلی متمرکز بشه :autocmd VimEnter * NERDTree | wincmd pالان دیگه خیلی راحت curser سر جای اصلی خودشه!خب حالا شاید یکی دوست داشت nerdtree ببنده برای چند دقیقه یا حتی بازش کنه؛ بعضی وقت ها فقط میخواید رویه کد خودتون تمرکز کنید پس برای اینکار میتونید از میانبر های زیر استفاده بکنید:(بعد از تابع ) :nnoremap <C-x> :NERDTreeClose<CR>:nnoremap <C-c> :NERDTree<CR>دستور اول: با زدن ctrl+x نردتری بسته میشه( خیلی سر راسته نه؟؟)دستور دوم : با زدن دستور ctrl+c نردتری باز میشه خب یه نکته رو یادتون باشه که من دست چپم و با سمت چپ کیبورد بیشتر کار میکنمخب بعضی وقت ها nerdtree خیلی بزرگه و دوست دارید یکم کوچیک ترش بکیند؛برای اینکار من ازچهار تا کامند استفاده کردم که خودتون میتونید تستشون بکنید:nnoremap <C-Up> :resize +2<CR>nnoremap <C-Down> :resize -2<CR>nnoremap <C-Left> :vertical resize +2<CR>nnoremap <C-Right> :vertical resize -2<CR>حالا میتونی صفحه تون رو بزرگ کوچیک بکنید ( با کلید های چپ و راست و بالا و پایین )‌خب اینم از nerdtree حالا بریم سراغ بقیه.vim-rainbowاین پلاگین باعث میشه که پرانتز ها آکولاد و ... رنگی رنگی بشن و یه جلوه خاصی به کدتون بدن.https://github.com/frazrepo/vim-rainbowخب برای اینکه بتونید این پلاگین نصب کنید این دستور بین اون دو تابع بزارید :Plug 'frazrepo/vim-rainbow'و حالا برید مثل پلاگین قبلی نصبش کنید ومراحلی که برای نصب پلاگین گفتم نصب کنید.در حالت عادی زیاد زیبا و قشنگ نیست اما با یکم شخصی سازی درست میشه ( من برای سی تنظیم کردم اما شما میتونید برید گیتهابش رو چک کنید):let g:rainbow_active = 1let g:rainbow_load_separately = [ \ [ '*' , [['(', ')'], ['\[', '\]'], ['{', '}']] ], \ [ '*.tex' , [['(', ')'], ['\[', '\]']] ], \ [ '*.c' , [['(', ')'], ['\[', '\]'], ['{', '}']] ], \ [ '*.{html,htm}' , [['(', ')'], ['\[', '\]'], ['{', '}'], ['<\a[^>]*>', '</[^>]*>']] ], \ ]let g:rainbow_guifgs = ['RoyalBlue3', 'DarkOrange3', 'DarkOrchid3', 'FireBrick']let g:rainbow_ctermfgs = ['lightblue', 'lightgreen', 'yellow', 'red', 'magenta']حالا از ویم خارج بشید و دوباره وارد بشید . و میبینید که رنگی رنگی میشن پرانتز ها و...بریم سراغ بعدی=)auto-pairsباعث میشه پرانتز ها و ... وقتی باز میکنید به صورت اتوماتیک بسته بشهhttps://github.com/jiangmiao/auto-pairsمثل قبل نصبش کنید تنظیم خاصی نمیخواد خودش به صورت اتوماتیک براتون باز و بسته میکنه.coc.nvimhttps://github.com/neoclide/coc.nvimاین پلاگین چیزی شبیه به LSP ها هست؛خودتون برید تو لینک گبتهابش متوجه میشید.این پلاگین از بقیه پلاگین هایی که گفتم نصبش دردسر ساز تر و پیچیده تره اما از بقیه LSP ها بهتره.حتما برید گیتهابش رو چک کنید تا دچار مشکلی نشید.این پلاگین نیاز به nodejs داره پس اول باید nodejs رو نصب کنید؛ برای اینکار وارد ترمینال خودتون بشید و دستور زیر رو به صورت کامل بزنید ( همش رو کپی پیست کنید )‌:curl -sL install-node.vercel.app/lts | bashیا هرجور دیگه ایی که دوست داشتید nodejs رو نصب کنید.بعدش این کد رو بین اون دو تابع بزارید:Plug 'neoclide/coc.nvim', {'branch': 'release'}خب حالا باید پلاگین رو نصب کنید ( همونطور که قبلا گفتم ) بعدش صبر میکنیدو وقتی هم که نصب شد از ویم خارج میشید و دوباره وارد میشید.حالا باید سرور ها و چیز هایی که خوده coc نیاز داره و نصب کنیم برای اینکار وارد حالت کامند مود بشید و دستور زیر رو بزنید::CocInstall coc-json coc-tsserverحالا صبر کنید نصب بشن و وقتی نصب شدن از ویم خارج بشید و بعد دوباره وارد بشید یا سیو کنید از ویم خارج بشید ( این بهتره ).حالا باید وارد ترمینال بشید و وارد دایرکتوری زیر بشید:cd ~/.vimحالا که وارد دایرکتوری زیر شدید ببینید که فایل coc-settings.json وجود داره یا نه( به احتمال ۹۹ درصد وجود داره اگر نداشت یکی بسازید ) در این فایل زبان برنامه نویسی خودمون رو انتخاب میکنیم ؛یعنی تنظمات زبان برنامه نویسی خودمون رو اینجا درست میکنیم ( تویه لینک گیتهابش هم هست )‌ یعنی فقط کپی پیست!! که تویه اون لینک گیتهابی که دادم لیست زبان ها هست که شما خودتون میتونید انتخاب کنید و نصب کنید؛برای همین من زبان خاصی رو نمیگم ولی به شخصه خودم زبان های خانواده سی و bash استفاده میکنم.بریم بعدی=)vim-deviconshttps://github.com/ryanoasis/vim-deviconsآیکون های زیادی رو به ویم اضافه میکنه ( برای شما و من به nerdtree )نصبه فوق العاده آسونی داره فقط باید پلاگین رو اضافه کنید بین اون دو تابع و نصبش کنید و فقط همین ( البته یه مرحله دیکه داشت اما ما اون رو از قبل انجان دادیم :) )Plug 'nvim-tree/nvim-web-devicons'خب حالا نصبش کنید=)نکته!!!شما برای کار کردن این پلاگین نیاز به یک nerdfont داریدشما باید دستور رو بزنید در فایل تنظیمات ویم خودتون set encoding=UTF-8خب حالا میبنید که nerdtree خیلی خوشگل شده.بریم بعدی =)supertabhttps://github.com/ervandew/supertabخب برای اینکه بتونید از تب استفاده بکنید برایی کامل کردن کد خودتون باید از این پلاگین استفاده کنید چرا؟؟چون در حال عادی کامل کردن اتوماتیک کد در ویم با کلید ترکیبی ctrl+n هست !!!! =( این خیلی رو مخه پس برای همین از تب استفاده میکنیم!!برای نصب فقط کافیه :Plug 'ervandew/supertab' خب حالا نصبش کنید و استفاده کنید؛ترکیب این پلاگین با coc فوق العاده خفن میشه پس حتما نصبش کنید برای من که مشکلی نداشت و همون لحظه ازش استفاده کردم اما اگر شما دوست دارید تنظیمات دیگری رو اضافه کنید حتما برید لینک گیتهابش رو چک کنیدبریم سراغ مبحث بعدی=)themesمن در ویم از ۳ تم اصلی استفاده میکنم که هر ۳ تاشون فوق العاده هستندبه ترتیب میرم جلو تا بهتون نشون بدم.draculamolokayomolokaiخب من به ترتیب نحوه نصب هر ۳ رو میگم:)برای اولی فقط کافیه که این پلاگین رو بین اون دو تابع بزارید و نصبش کنید: Plug 'dracula/vim', { 'as': 'dracula' }خب حالا بعد call plug#end بنویسید(برای همشون ) :colorscheme draculaحالا برای دومی باید این پلاگین رو نصب کنید:Plug 'fmoralesc/molokayo'بعد بنویسید:colorscheme molokayoبرای آخری باید این پلاگین و نصب کنید:Plug 'tomasr/molokai'بعد بنویسید:colorscheme molokaiخب این ها تم ها ویم بودن ولی به جز تم باید خط status bar هم به ویم اضافه کنیم+)من برای این خط استاتوس از ویم ایرلاین استفاده میکنم.vim-airline https://github.com/vim-airline/vim-airlineحتما گیتهابش رو چک کنید چون تم های فوق العاده زیاد و قشنگی داره=)برای نصبش باید بین اون دو تابع بنویسید:Plug 'vim-airline/vim-airline'Plug 'vim-airline/vim-airline-themes'خط اول برای اینه که پلاگین رو نصب کنیم خط بعد هم برای نصب هم ی تم های موجوده:)خب حالا از ویم خارج بشید و بعد دوباره وارد بشید تا پلاگین فعال بشه.حالا این چند خط کد رو بزنید تا یکم بهتر بشه :let g:airline_powerline_fonts = 2let g:airline#extensions#tabline#enabled = 1let g:airline_theme='cyberpunk'let g:airline#extensions#tabline#formatter = 'unique_tail'خب خط یکی مونده آخر باعث میشه تم خودتون رو انتخاب کنید که من سایبرپانک گذاشتم و خط آخر هم اینه که چطور اون اطلاعات رو نشون بده ( یه همچین چیزی ) خط اول هم از پاور لاین فونت استفاده میکنه که شما باید یک بزارید ( تاثیری هم نداره ) خب حالا باید چند تا تنظیمات دیگر رو هم انجام بدیم تا دیگه همه چی بر وفق مرادمون باشه :)بخش آخر=(به طور کلی من از تب ها بیشتر استفاده میکنم تا بافر ها!برای همین باید خیلی سریع بین تب ها جابجا بشم در حالت عادی شما با gt و gT بین تب ها در رفت آمدید اما این خیلی بیخود و چرته!! برای همین من همیشه با ctrl+a و ctrl + s تویه تب های جابجا میشم شما میتونید با دستور زیر این رو به ویم خودتون اضافه کنید:nnoremap <C-a> :tabprevious<CR>nnoremap <C-s> :tabnext<CR>خط اول با ctrl +a به تب قبلی میریدخط دوم با ctrl +s به تب بعدی میریدحالا که بحث تب ها شد بگم که من دوتا کامند دیگه برای استفاده از تب ها رو دارم! یکی برای بستن تب و یکی برای درست کردن تب جدید که شما میتونید از اون ها استفاده کنید:nnoremap <C-d> :tabnew<CR>nnoremap <C-z> :tabclose<CR>خط اول با ctrl + d تب جدید درست میکنه خط دوم با ctrl+z تب رو میبندهخب من برای اینکه ویم بتونه نوع فایل بنده رو توجه بشه از دستور زید استفاده میکنم که شما هم میتونید به فایل ویم آر سی خودتون اضافه کنید:autocmd BufWritePre *.m,*.h,*.c,*.mm,*.cpp,*.hpp call StripTrailingWhitespace() خب این آموزش هم تموم شد اما چند تا نکته رو به خاطر داشته باید:این تنظیمات باید در فایل vimrc . خودتون اضافه کنید و سیو کنید تا کار بکنند.باید حتما پلاگین منیجر رو نصب کرده باشید تا بتونید پلاگین ها رو نصب کنید.بین اون دو تابع فقط باید پلاگین ها نوشته بشن نه چیزه دیگه ایی!!دقت داشته باشید که میتونید پلاگین های vundle رو هم نصب کنید چون تنها تفاوتی که دارن اینه که به جای Plug از Plugin استفاده میکنه و شما میتونید i , n حذف کنید!پیشنهاد میکنم ین دو تا سایتی که میدم رو چک کنید خیلی برای ویم فوق العاده هستند!اولی: https://vimawesome.com/میتونید هر پلاگینی که دوست داشتید توش پیدا کنید!!دومی:https://vimcolorschemes.com/دنیایی از تم هست که میتونید یکی رو انتخاب کنید!!!این هم پایان پست امروزمون امیدوارم که خوشتون اومده باشه و درضمن این پست همیشه آپدیت میشه اگر خوشتون اومد حتما نظرتون رو بنویسید.ایمیل من برای بازخود های شما learnerlearn485@gmail.comاگر مشکلی بود حتما بگید!! تا راهنمایی تون کنم=)