learner
learner
خواندن ۱۵ دقیقه·۱ سال پیش

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

https://github.com/preservim/nerdtree
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 = 1
let 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.nvim

https://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-devicons

https://github.com/ryanoasis/vim-devicons


آیکون های زیادی رو به ویم اضافه میکنه ( برای شما و من به nerdtree )

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

Plug 'nvim-tree/nvim-web-devicons'

خب حالا نصبش کنید=)

نکته!!!

شما برای کار کردن این پلاگین نیاز به یک nerdfont دارید

شما باید دستور رو بزنید در فایل تنظیمات ویم خودتون set encoding=UTF-8

خب حالا میبنید که nerdtree خیلی خوشگل شده.

بریم بعدی =)



supertab

https://github.com/ervandew/supertab

خب برای اینکه بتونید از تب استفاده بکنید برایی کامل کردن کد خودتون باید از این پلاگین استفاده کنید چرا؟؟

چون در حال عادی کامل کردن اتوماتیک کد در ویم با کلید ترکیبی ctrl+n هست !!!! =( این خیلی رو مخه پس برای همین از تب استفاده میکنیم!!

برای نصب فقط کافیه :

Plug 'ervandew/supertab'

خب حالا نصبش کنید و استفاده کنید؛ترکیب این پلاگین با coc فوق العاده خفن میشه پس حتما نصبش کنید

برای من که مشکلی نداشت و همون لحظه ازش استفاده کردم اما اگر شما دوست دارید تنظیمات دیگری رو اضافه کنید حتما برید لینک گیتهابش رو چک کنید

بریم سراغ مبحث بعدی=)



themes

من در ویم از ۳ تم اصلی استفاده میکنم که هر ۳ تاشون فوق العاده هستند

به ترتیب میرم جلو تا بهتون نشون بدم.

dracula

molokayo

molokai

خب من به ترتیب نحوه نصب هر ۳ رو میگم:)

برای اولی فقط کافیه که این پلاگین رو بین اون دو تابع بزارید و نصبش کنید:

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 = 2
let g:airline#extensions#tabline#enabled = 1
let 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

اگر مشکلی بود حتما بگید!! تا راهنمایی تون کنم=)

شخصی سازیویمpluginپلاگینپلاگین برای ویم
یک کیبرد آزادی متعصب
شاید از این پست‌ها خوشتان بیاید