برنامه نویسی

ضروریات Vim در لینوکس – انجمن DEV

Summarize this content to 400 words in Persian Lang

فهرست مطالب

پس چرا این مقاله؟

سوال خوب! من استفاده کرده ام Vim در macOS برای مدت بسیار طولانی، اماprimarily برای نوشتن Git پیام ها را متعهد کنید Most از من file editing داردtaken place داخل Visual Studio Code.

Then من started working در Linux، but در یک virtual environment(VirtualBox) installed در Windows 11. این memory و disk space منallocated به آن بود much smaller از what من دارم available در macOS،و Visual Studio Code است known بخاطر حریص بودن حافظه من نصبش کردملینوکس مینت، اما سرعت آن را به شدت کاهش داد OS و حتی crashed از بهtime به time. That است when من decided به use را Vim ویرایشگر متنinstead.

By default، Vim انجام داد not آن را قطع کن for what من wanted به accomplish، soمن انجام دادم some research به learn more در مورد آن، how من می توانستم configure آن را بهhelp من accomplish آنچه من wanted به accomplish، و better حرکت کنیدVim در general.

Well، من found out که من can اساسا use آن را like هر دیگری editor،از جمله Visual Studio Code. آن را was الف matter از mastering آن را Butوجود دارد another aspect به this.

در Linux Mint داخل VirtualBox، برای من، پیش فرض است Terminal بر روی استsmall side. من laptop screen است not را largest و Linux Mintپنجره در VirtualBox است not را largest یا این key input با استفاده ازlaptop keypad است not بیشترین fantastic experience در Windows. بنابراین whatآیا من do در مورد that?

It بود serendipitous. در تحقیقاتم، من accidentally آمد across یک جدیدterminal program تماس گرفت Warp. Currently، آن works در Linux وmacOS یونیکس operating systems. Warp برای Windows است also بیرون آمدنsoon، اما دارد not بوده است released هنوز

Basically، Warp یک است modern، مبتنی بر زنگ terminal با AI ساخته شده در بنابراینyou و your تیم می تواند build عالی software سریعتر

All را Terminal اسکرین شات و گیف I use اینجا بودند taken در Warp.

من آن را دوست دارم Despite داشتن AI ساخته شده، وجود دارد still یک است significantیادگیری curve. این کار را انجام می دهد detect و بنابراین tools ما use در ماnative OS، مانند shell. استفاده می کنم ZSH در macOS، بنابراین Warp استفاده می کند ZSH. درLinux، استفاده می کنم Bash، بنابراین Warp استفاده می کند Bash وجود دارد. من هستم never رفتن back بهiTerm2 در macOS یا Linux Mintپیش فرض است Terminal برنامه Warp همهway!

Vim مخفف چیست؟

Vim مخفف Vi iMproved. Vi است frequently الف symbolic link به Vim،را enhanced version از Vi. If شما دارید vim نصب شده و access بهرا vim فرمان، تو also دارند access به vi فرمان When مننصب شده است Vim در Linux Mint، من gained access به both را vim و viفرمان

پیکربندی Vim

به make من life بسیار easier چه زمانی working با Vim، من configured آن راusing یک فایل I created (که بود not included توسط default) تماس گرفت.vimrc داخل من home directory (/home/maria در Linux و/Users/mariacam در macOS). من added را following به .vimrc فایل:

# Disable compatibility with vim which can cause unexpected issues.
set nocompatible
set autoindent
# Set tab width to 4 columns.
set tabstop=4
# Use space characters instead of tabs.
set expandtab
# Set shift width to 4 spaces.
set shiftwidth=4
# Add numbers to each line on the left-hand side.
set number
# Highlight cursor line underneath the cursor horizontally.
set cursorline
# Highlight cursor line underneath the cursor vertically.
set cursorcolumn
# Do not save backup files.
set nobackup
# While searching though a file incrementally highlight matching characters as you type.
set incsearch
# Do not wrap lines. Allow long lines to extend as far as the line goes.
set nowrap
# Ignore capital letters during search.
set ignorecase
# Override the ignorecase option if searching for capital letters.
# This will allow you to search specifically for capital letters.
set smartcase
# Show partial command you type in the last line of the screen.
set showcmd
# Show the mode you are on the last line.
set showmode
# Show matching words during a search.
set showmatch
# Use highlighting when doing a search.
set hlsearch
# Set the commands to save in history default number is 20.
set history=1000
# Enable auto completion menu after pressing TAB.
set wildmenu
# Make wildmenu behave like similar to Bash completion.
set wildmode=list:longest
# Wildmenu will ignore files with these extensions.
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx
# Enable type file detection. Vim will be able to try to detect the type of file in use.
filetype on
# Enable plugins and load plugin for the detected file type.
filetype plugin on
# Load an indent file for the detected file type.
filetype indent on
# Turn syntax highlighting on.
syntax on

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این immediately ساخته شده است navigating فایل ها در Normal mode وcreating content در Insert mode خیلی easier!

If من open من .vimrc فایل using را vim .vimrc فرمان در macOSiTerm2، اکنون looks like را following:

اگر من open من .vimrc فایل با استفاده از vim .vimrc فرمان در macOS پیچ و تابTerminal، اکنون looks like را following:

Highlighting colors و الف few دیگر details می differ slightly چه زمانیبا استفاده از Warp ترمینال. However، به عنوان shown above، اینها configurations هنوزwork well با Warp و do not باعث هر گونه شود conflicts از آنجایی که Warp کار می کندبا Vim.

دستور vim

این first command به learn در رابطه با Vim است vim فرمان In orderبه open الف file در Vim، من run را following در Terminal:

# this command opens up a file called history.txt in Vim
vim history.txt

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالت های Vim

هستند 4 اصلی modes در vim. Normal mode، Insert mode، Visual mode،و Command حالت According به Warp اسناد، نیز وجود داردReplace mode (که در واقع همینطور است part از Normal mode; Replace mode استredundant) Binary mode، و Org mode. Binary و Org mode سقوطunder بیشتر advanced Vim features و اراده not باشد covered اینجابا این حال، information مربوط به both است available درRelated Resources واقع در bottom از این article.

حالت عادی

Normal mode است default mode چه زمانی we وارد کنید Vim. آن است mode کهallows ما به move around الف file. Normal mode می تواند باشد accessed ازother modes توسط pressing را esc کلید

میانبر (کوچک) gg

When من press را g کلید twice، gg، من هستم taken به beginning از یکfile.

میانبر G (بزرگ).

When من press را G کلید (Shift key + G کلید)، من هستم taken به endاز یک file.

میانبر # (تعداد) G

من love این one. # یک است placeholder برای line number که شماwant به go to. بیایید بگوییم من want به go به خط کشیدن 15 از یک file در Vim،من می خواهم go به Normal mode توسط pressing را esc کلید، then تایپ می کرد15G (1 کلید + 5 کلید + Shift key + G key) و من خواهم بود taken بهbeginning از خط 15 از یک file در Vim.

میانبر h (کوچک).

When من press را h کلید، cursor حرکت می کند one character به left.

میانبر j (کوچک).

When من press را j کلید، cursor حرکت می کند one خط down.

میانبر k (کوچک).

When من press را k کلید، cursor حرکت می کند one خط up.

میانبر l (کوچک).

When من press را l کلید، cursor حرکت می کند one شخصیت to راright.

میانبر # (عدد) j

This است similar به میانبر # (تعداد) G.When من press کلید Shift + 6 کلید + j کلید، به عنوان مثال، cursorحرکت می کند 6 خطوط down.

میانبر # (عدد) k

This است similar به میانبر # (تعداد) G.When من press را 8 کلید + (کوچک) k کلید، به عنوان مثال، cursorحرکت می کند 8 خطوط up.

میانبر w (کوچک).

When من press را w کلید، cursor حرکت می کند به beginning ازnext word.

میانبر b (کوچک).

When من press را b کلید، cursor حرکت می کند به beginning ازprevious word.

میانبر (کوچک) e

When من press را e کلید، cursor حرکت می کند به end از یک word.

میانبر W (بزرگ).

When من press را Shift کلید + w کلید، cursor حرکت می کند بهbeginning از next word بعد از یک whitespace. این است basically راsame به عنوان میانبر w (کوچک).

میانبر B (بزرگ).

When من press را Shift کلید + b کلید، cursor حرکت می کند بهbeginning از previous word قبل از الف whitespace. این است basicallyرا same به عنوان میانبر b (کوچک).

میانبر E (بزرگ).

When من press را Shift کلید + e کلید، cursor حرکت می کند به end از یکword قبل از الف whitespace. این است basically را same به عنوانمیانبر (کوچک) e.

میانبر 0 (صفر).

When من press را 0 کلید، cursor حرکت می کند به beginning از یک line.

میانبر ^ (caret).

این ^ (caret) shortcut است same به عنوانمیانبر 0 (صفر). When من press را Shiftکلید + 6 کلید، cursor حرکت می کند به beginning از یک line.

میانبر (علامت دلار) $

When من press را Shift کلید + 4 کلید، cursor حرکت می کند به end از یکخط

میانبر r (کوچک).

When من move را cursor بیش از یک particular character من want بهreplace، من press را r کلید، و then من press را key ازcharacter من want به replace آن را with.

این way این shortcut آثار است when منmove را cursor بیش ازcharacter من want به replace، و سپس press را r کلید، characterمن want به replace است first replaced توسط یک r شخصیت، و then وقتی منpress را character (key) من want به replace آن را with، آن replacesرا r که appeared وقتی من executedمیانبر r (کوچک).

میانبر x (کوچک).

این shortcut است similar بهمیانبر r (کوچک). When من move راcursor بیش از character من want به delete، من پس از آن press را x کلید،و character است deleted. این shortcut نیز هست referred به as را”دکمه حذف”.

این way این shortcut آثار است when من move را cursor بیش ازcharacter من want به delete، و سپس press را x کلید، characterمن wanted به delete است deleted. But اگر من want به bring back راcharacter من دارم deleted، من press (lowercase) u کلید کهexecutes میانبر (کوچک) u.

میانبر X (بزرگ).

این shortcut (معروف به “Backspace button”) حذف می کند characters بهleft از cursor، اما not را character آن است highlighting (if آن رااست highlighting یک). So اگر شما delete یک entire line با استفاده ازمیانبر X (بزرگ)، except برایcharacter را cursor است highlighting، شما می توانید press (lowercase)x کلید، و character خواهد بود removed.

میانبر (کوچک) dw

When من highlight الف word، و سپس press را d به دنبال آن w کلید،را word است deleted. و if من want به bring back که word، من می خواهمpress (lowercase) u کلید به undo که edit. If، however، منwanted به replace را word من deleted، من می خواهم want به useمیانبر (کوچک) cw.

In order به highlight الف complete word، من have وارد شدن Visual mode. بهswitch از Normal Mode به Visual mode، من first را فشار دهید esc کلید وسپس (lowercase) v کلید این esc کلید takes من out از Normal mode،و (lowercase) v کلید takes من به Visual mode. Then، من useیا forward arrow کلید به highlight را word به right ازcursor، مطمئن شوید که end برجسته کردن after را last character ازword، یا left arrow کلید به do را same در opposite direction.

میانبر (کوچک) cw

When من highlight الف word، و سپس press را c کلید followed توسطw کلید، word است deleted، و من پس از آن replace آن را با another one.

In order به highlight الف complete word، من have وارد شدن Visual mode. بهswitch از Normal Mode به Visual mode، اول من press را esc کلید وthen (lowercase) v کلید این esc کلید takes من out ازNormal mode، و v کلید takes من به Visual mode. Then، استفاده می کنمeither را forward arrow کلید به highlight را word به right ازcursor، مطمئن شوید که end برجسته کردن after را last character ازword، یا left arrow کلید به do را same در opposite direction.

میانبر (کوچک).

When من highlight الف character با cursor و سپس press را sکلید، من پس press را key از character من want به replace آن راwith.

میانبر S (بزرگ).

When من highlight را location در یک line جایی که من want به start راedit از من line، and سپس press را Shift کلید + s کلید، آن removesکه content، و then من می توانم type در what من want به replace آن راwith.

میانبر D (بزرگ).

When من place من cursor جایی که من want به start deleting الف line، andسپس press را Shift + d کلید، آن deletes را line از that point بهرا end از line.

میانبر dd (کوچک).

When من select را point از which من want به delete الف line با استفاده ازرا cursor، من پس از آن press را d کلید followed توسط pressing را d کلیدagain، and را line از location از cursor در، است deleted.If من place را cursor در beginning از line، entire lineاست deleted.

میانبر C (بزرگ).

This است similar به میانبر (بزرگ) D،اما when من press را Shift کلید + c کلید، after (part of)line بوده است deleted، من می توانم replace آن را با new content.

میانبر (کوچک) yy

This کار می کند similarly بهمیانبر dd (کوچک)، except کهinstead از line بودن deleted، it است copied. من first قرار دهیدcursor جایی که من want برای شروع copying را line، و then من press را(lowercase) y کلید followed توسط pressing (lowercase) y کلیدagain، and را part از line من selected (یا complete line اگرمن placed را cursor در beginning از line) است copied بهclipboard.

میانبر p (کوچک).

After من دارم copied الف line (یا part از it) as perمیانبر (کوچک) yy، I press را pکلید، و line است pasted زیر line من copied.

میانبر P (بزرگ).

After من دارم copied الف line (یا part از it) as perمیانبر (کوچک) yy، I press را Shiftکلید + p کلید، and را line است pasted above را line من copied.

میانبر (کوچک) u

When من press را u کلید، آن undoes را last change من made. من canهمچنین keep در pressing را u کلید در order به keep در undoing قبلیchanges. Once من هستم happy با current state از من file، من canنوع :w بنابراین that من save این acceptable state. If من want برای خروجVim بعد از saving را acceptable state، من would به سادگی press را escکلید followed توسط : (Shift key +(;) semi-colon کلید)، and منwould باشد taken back به من Terminal سریع

میانبر Control + r

این Control key + r کلید undoes من undo من executed بامیانبر (کوچک) u. و if من want بهrevert به من latest undo، من فقط press (lowercase) u کلیدexecuting میانبر (کوچک) u.

تکرار دستورات

تکرار یک دستور با استفاده از شمارش

Vim پشتیبانی می کند shortcut repetition در Normal mode. Instead از enteringهمان shortcut چندگانه times به repeat را desired action، من می توانمprefix را same shortcut با number از repetitions. به delete 6lines، من می خواهم highlight را beginning از line من wanted به startمن deletion با cursor، و then من می خواهم press را 6 کلیدfollowed توسط d کلید and را d کلید again (6dd). This خواهد شدdelete را line جایی که cursor است located و 5 خطوط after که

به repeat میانبر (کوچک) yy، من می خواهمhighlight را beginning از line من wanted به start من copyingبا cursor، و then من می خواهم press را 6 کلید (again،for example) followed توسط y کلید و y کلید again (6yy).Next، من می خواهم move را cursor زیر current line و سپس move آن را5 times بیشتر، برای یک total از 6 خطوط، stopping در last line منwant به copy ( cursor باید appear به “underline” که line).This خواهد شد copy را line جایی که cursor began و 5 خطوط afterکه Lastly، من می خواهم press (lowercase) p کلید، not حرکت دادنcursor، و this خواهد شد paste را 6 خطوط I copied.

این screenshot زیر shows را first line که من wanted بهstart copying از و where من placed را cursor در beginning ازکه line، و then فشار دادم 6yy (6 کلید + y کلید + y کلید) درbeginning از line جایی که cursor است located:

این screenshot زیر shows را end line از line block من want بهcopy. من moved به این line بعد از من had فشرده شده است 6yy (به عنوان describedبالاتر از first screenshot). من had به take را cursor به lineجایی که من wanted به end را copying process.

Then من pressed را p کلید، و 6 خطوط I copied هستند pasted زیررا lines من copied:

حالت درج

Insert mode اجازه می دهد me به type/insert شخصیت ها just like الف regularمتن editor. من can وارد کنید Insert mode توسط using یک insert shortcut ازNormal mode.

ورود به حالت Insert

There هستند several ways از ورود Insert mode.

میانبر (کوچک) i

When من press را i کلید، من هستم switched به Insert mode. من know من هستمدر Insert mode چون — Insert — ظاهر می شود bottom ازwindow.

میانبر (بزرگ) I

When من press را Shift کلید + i کلید، من switch به Insert mode، andرا cursor حرکت می کند به beginning از line (اگر باشد not در حال حاضرthere).

میانبر (کوچک).

[The (lowercase) a shortcut] behavior است almost را same به عنوان(کوچک) i میانبر. این only difference استthat وقتی من press را a کلید، و زمان — Insert — ظاهر می شودbottom از window، cursor حرکت می کند from را beginning ازline به next character به right.

میانبر (بزرگ) A

When من press را Shift کلید + a کلید، من switch به Insert mode،و cursor حرکت می کند to را end از line.

میانبر (کوچک) o

After من press را o کلید، من switch به Insert mode، و cursorحرکت می کند down به second line، creating یک جدید line space. این contentsاز second line منتقل می شود down به third line.

میانبر (بزرگ) O

When من press را Shift + o کلید، من switch به Insert mode، and راfirst line حرکت می کند down به second line، leaving الف line space بر رویخط اول

تغییر از حالت Insert به حالت عادی

In order به switch از Insert mode به Normal mode، من press راesc کلید و if من همیشه هستم unsure آیا من am در Normal mode یا not،من press را esc کلید به make sure.

حالت بصری

I استفاده کنید Visual mode برای انتخاب text، similar به clicking و draggingبا یک mouse. Selecting text اجازه می دهد shortcuts به apply فقط بهselection، مانند copying، deleting، replacingو غیره

وارد شدن به حالت ویژوال

به make الف text selection، first من press (lowercase) v کلید، andاین will همچنین mark را starting انتخاب point. Then من move راcursor به end selection point، و Vim الف را فراهم می کند visual highlightاز text selection.

میانبر (کوچک) v

این shortcut نیز هست known به عنوان Visual mode visual subtype.

When من want وارد شدن Visual mode visual subtype، من first را فشار دهید escکلید به exit هر چه باشد mode من بودم in، و then من press را v کلید، اینswitches من به Visual mode، و will همچنین mark راstart selection point. When من move را cursor در سراسرfirst line، cursor حرکت می کند character توسط character.

Next، من می توانم use را Up arrow یا (lowercase) k کلید بهselect lines رفتن up. As ذکر شده است previously، no موضوع what راdifference در line lengths، lines هستند completely selected. Sameبا when من use را Down arrow کلید یا (lowercase) j کلید بهselect lines رفتن down.

میانبر (بزرگ) V

این shortcut نیز هست known به عنوان Visual mode line-wise visual subtype.آن را always انتخاب می کند full lines.

When من press را Shift کلید + v کلید، من switch به Visual mode، واین makes متن selections خط by خط این است great برای when منwant به select الف block از text در which را lines هستندdifferent lengths. After من select را first line، و سپس move راcursor پایین (یا Up arrow کلید به move را cursor بالا)، خواهد شدselect را whole line نه matter را difference در line length.

میانبر Control + v

این shortcut نیز هست known به عنوان Visual mode block-wise subtype. آن راselects هر rectangular selection.

When فشار می دهم Control کلید + (lowercase) v کلید، من هستم switched بهVisual mode block-wise subtype. So far، دارم not داشتappropriate opportunity به use این subtype. So far، contrary بهpopular opinion، من find آن را somewhat limiting.

همانطور که opposed به Visual mode visual subtype یاVisual mode line-wise visual subtype، shortest line است selected وkept زمانی که هر دو selecting خطوط down یا up. This است زیرا linesو columns هستند being selected در same time، و columns تشکیل شودازlines از equal width.

حالت فرمان

درخواست کمک از Vim

If من need به find بیرون how انجام دادن something در Vim، من می توانم دسترسی داشته باشم Vimکمک توسط running را :help فرمان من اول make sure من am درNormal mode توسط pressing را esc کلید، و then من press را Shiftکلید + (;) semi-colon کلید، و then تایپ میکنم “help”. And را followingظاهر می شود:

Then من press را Return کلید و following ظاهر می شود:

من could همچنین search برای specific help با :help فرمانFor example، می توانستم تایپ کنم :help visual.txt:

When من want به exit را :help یا :help visual.txt فرمان، من firstرا فشار دهید esc کلید followed توسط :q! و then را Return کلید، کهtakes من out از :help visual.txt فرمان However، من هستم still درCommand mode. If من want به quit به طور کامل out از Vim، I به سادگیhit را Return کلید again، and هستم taken back به Terminal سریع

If من want به remain در Vim، اما want به exit خارج از Command mode،instead از pressing را Return کلید الف second time، من press را(lowercase) i کلید and هستم taken به Insert mode. If من want بهswitch به another mode مانند Normal modeمثلا من press راesc کلید This way، من stay در Vim.

سایر دستورات حالت فرمان

Other حالت فرمان commands (some از which دارند already بوده استcovered):

# Quit file
:q
# write changes to file
:w
# Save and quit
:wq
# Save and quit
😡
# Quit forcefully
:q!
# Save and exit forcefully
:wq!
# Go to first line of file
:1
# Set numbers to lines
:set nu
# Remove numbers from lines
:set nanu
# Specified line number, Same as :1 command, just a different number.
:
# The command output will paste in current cursor position.
:r !date
# Executes shell command “ls” of current working directory in Terminal
:!ls

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

There is زیاد more به Command mode، اما this یک است good start!

شما می توانید dig deeper در Vim توسط checking out مختلف Related Resources.

Vimtutor

By default، Vim نصب کنید includes الف tutorial تماس گرفت vimtutor. هستmeant به help ما learn را Vim اصول اولیه hands-on. ما می توانیم start راvimtutor توسط running را following command در Terminal:

vimtutor

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

منابع مرتبط

فهرست مطالب

فهرست مطالب

پس چرا این مقاله؟

سوال خوب! من استفاده کرده ام Vim در macOS برای مدت بسیار طولانی، اما
primarily برای نوشتن Git پیام ها را متعهد کنید Most از من file editing دارد
taken place داخل Visual Studio Code.

Then من started working در Linux، but در یک virtual environment
(VirtualBox) installed در Windows 11. این memory و disk space من
allocated به آن بود much smaller از what من دارم available در macOS،
و Visual Studio Code است known بخاطر حریص بودن حافظه من نصبش کردم
لینوکس مینت، اما سرعت آن را به شدت کاهش داد OS و حتی crashed از به
time به time. That است when من decided به use را Vim ویرایشگر متن
instead.

By default، Vim انجام داد not آن را قطع کن for what من wanted به accomplish، so
من انجام دادم some research به learn more در مورد آن، how من می توانستم configure آن را به
help من accomplish آنچه من wanted به accomplish، و better حرکت کنید
Vim در general.

Well، من found out که من can اساسا use آن را like هر دیگری editor،
از جمله Visual Studio Code. آن را was الف matter از mastering آن را But
وجود دارد another aspect به this.

در Linux Mint داخل VirtualBox، برای من، پیش فرض است Terminal بر روی است
small side. من laptop screen است not را largest و Linux Mint
پنجره در VirtualBox است not را largest یا این key input با استفاده از
laptop keypad است not بیشترین fantastic experience در Windows. بنابراین what
آیا من do در مورد that?

It بود serendipitous. در تحقیقاتم، من accidentally آمد across یک جدید
terminal program تماس گرفت Warp. Currently، آن works در Linux و
macOS یونیکس operating systems. Warp برای Windows است also بیرون آمدن
soon، اما دارد not بوده است released هنوز

Basically، Warp یک است modern، مبتنی بر زنگ terminal با AI ساخته شده در بنابراین
you و your تیم می تواند build عالی software سریعتر

All را Terminal اسکرین شات و گیف I use اینجا بودند taken در Warp.

من آن را دوست دارم Despite داشتن AI ساخته شده، وجود دارد still یک است significant
یادگیری curve. این کار را انجام می دهد detect و بنابراین tools ما use در ما
native OS، مانند shell. استفاده می کنم ZSH در macOS، بنابراین Warp استفاده می کند ZSH. در
Linux، استفاده می کنم Bash، بنابراین Warp استفاده می کند Bash وجود دارد. من هستم never رفتن back به
iTerm2 در macOS یا Linux Mintپیش فرض است Terminal برنامه Warp همه
way!

Vim مخفف چیست؟

Vim مخفف Vi iMproved. Vi است frequently الف symbolic link به Vim،
را enhanced version از Vi. If شما دارید vim نصب شده و access به
را vim فرمان، تو also دارند access به vi فرمان When من
نصب شده است Vim در Linux Mint، من gained access به both را vim و vi
فرمان

پیکربندی Vim

به make من life بسیار easier چه زمانی working با Vim، من configured آن را
using یک فایل I created (که بود not included توسط default) تماس گرفت
.vimrc داخل من home directory (/home/maria در Linux و
/Users/mariacam در macOS). من added را following به .vimrc فایل:

# Disable compatibility with vim which can cause unexpected issues.
set nocompatible
set autoindent
# Set tab width to 4 columns.
set tabstop=4
# Use space characters instead of tabs.
set expandtab
# Set shift width to 4 spaces.
set shiftwidth=4
# Add numbers to each line on the left-hand side.
set number
# Highlight cursor line underneath the cursor horizontally.
set cursorline
# Highlight cursor line underneath the cursor vertically.
set cursorcolumn
# Do not save backup files.
set nobackup
# While searching though a file incrementally highlight matching characters as you type.
set incsearch
# Do not wrap lines. Allow long lines to extend as far as the line goes.
set nowrap
# Ignore capital letters during search.
set ignorecase
# Override the ignorecase option if searching for capital letters.
# This will allow you to search specifically for capital letters.
set smartcase
# Show partial command you type in the last line of the screen.
set showcmd
# Show the mode you are on the last line.
set showmode
# Show matching words during a search.
set showmatch
# Use highlighting when doing a search.
set hlsearch
# Set the commands to save in history default number is 20.
set history=1000
# Enable auto completion menu after pressing TAB.
set wildmenu
# Make wildmenu behave like similar to Bash completion.
set wildmode=list:longest
# Wildmenu will ignore files with these extensions.
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx
# Enable type file detection. Vim will be able to try to detect the type of file in use.
filetype on
# Enable plugins and load plugin for the detected file type.
filetype plugin on
# Load an indent file for the detected file type.
filetype indent on
# Turn syntax highlighting on.
syntax on
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این immediately ساخته شده است navigating فایل ها در Normal mode و
creating content در Insert mode خیلی easier!

If من open من .vimrc فایل using را vim .vimrc فرمان در macOS
iTerm2، اکنون looks like را following:

اسکرین شات فایل .vimrc بعد از پیکربندی vim

اگر من open من .vimrc فایل با استفاده از vim .vimrc فرمان در macOS پیچ و تاب
Terminal، اکنون looks like را following:

اسکرین شات فایل .vimrc پس از پیکربندی vim Warp

Highlighting colors و الف few دیگر details می differ slightly چه زمانی
با استفاده از Warp ترمینال. However، به عنوان shown above، اینها configurations هنوز
work well با Warp و do not باعث هر گونه شود conflicts از آنجایی که Warp کار می کند
با Vim.

دستور vim

این first command به learn در رابطه با Vim است vim فرمان In order
به open الف file در Vim، من run را following در Terminal:

# this command opens up a file called history.txt in Vim
vim history.txt
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالت های Vim

هستند 4 اصلی modes در vim. Normal mode، Insert mode، Visual mode،
و Command حالت According به Warp اسناد، نیز وجود دارد
Replace mode (که در واقع همینطور است part از Normal mode; Replace mode است
redundant) Binary mode، و Org mode. Binary و Org mode سقوط
under بیشتر advanced Vim features و اراده not باشد covered اینجا
با این حال، information مربوط به both است available در
Related Resources واقع در bottom از این article.

حالت عادی

Normal mode است default mode چه زمانی we وارد کنید Vim. آن است mode که
allows ما به move around الف file. Normal mode می تواند باشد accessed از
other modes توسط pressing را esc کلید

میانبر (کوچک) gg

When من press را g کلید twice، gg، من هستم taken به beginning از یک
file.

میانبر G (بزرگ).

When من press را G کلید (Shift key + G کلید)، من هستم taken به end
از یک file.

میانبر # (تعداد) G

من love این one. # یک است placeholder برای line number که شما
want به go to. بیایید بگوییم من want به go به خط کشیدن 15 از یک file در Vim،
من می خواهم go به Normal mode توسط pressing را esc کلید، then تایپ می کرد
15G (1 کلید + 5 کلید + Shift key + G key) و من خواهم بود taken به
beginning از خط 15 از یک file در Vim.

میانبر h (کوچک).

When من press را h کلید، cursor حرکت می کند one character به left.

میانبر j (کوچک).

When من press را j کلید، cursor حرکت می کند one خط down.

میانبر k (کوچک).

When من press را k کلید، cursor حرکت می کند one خط up.

میانبر l (کوچک).

When من press را l کلید، cursor حرکت می کند one شخصیت to را
right.

میانبر # (عدد) j

This است similar به میانبر # (تعداد) G.
When من press کلید Shift + 6 کلید + j کلید، به عنوان مثال، cursor
حرکت می کند 6 خطوط down.

میانبر # (عدد) k

This است similar به میانبر # (تعداد) G.
When من press را 8 کلید + (کوچک) k کلید، به عنوان مثال، cursor
حرکت می کند 8 خطوط up.

میانبر w (کوچک).

When من press را w کلید، cursor حرکت می کند به beginning از
next word.

میانبر b (کوچک).

When من press را b کلید، cursor حرکت می کند به beginning از
previous word.

میانبر (کوچک) e

When من press را e کلید، cursor حرکت می کند به end از یک word.

میانبر W (بزرگ).

When من press را Shift کلید + w کلید، cursor حرکت می کند به
beginning از next word بعد از یک whitespace. این است basically را
same به عنوان میانبر w (کوچک).

میانبر B (بزرگ).

When من press را Shift کلید + b کلید، cursor حرکت می کند به
beginning از previous word قبل از الف whitespace. این است basically
را same به عنوان میانبر b (کوچک).

میانبر E (بزرگ).

When من press را Shift کلید + e کلید، cursor حرکت می کند به end از یک
word قبل از الف whitespace. این است basically را same به عنوان
میانبر (کوچک) e.

میانبر 0 (صفر).

When من press را 0 کلید، cursor حرکت می کند به beginning از یک line.

میانبر ^ (caret).

این ^ (caret) shortcut است same به عنوان
میانبر 0 (صفر). When من press را Shift
کلید + 6 کلید، cursor حرکت می کند به beginning از یک line.

میانبر (علامت دلار) $

When من press را Shift کلید + 4 کلید، cursor حرکت می کند به end از یک
خط

میانبر r (کوچک).

When من move را cursor بیش از یک particular character من want به
replace، من press را r کلید، و then من press را key از
character من want به replace آن را with.

این way این shortcut آثار است when منmove را cursor بیش از
character من want به replace، و سپس press را r کلید، character
من want به replace است first replaced توسط یک r شخصیت، و then وقتی من
press را character (key) من want به replace آن را with، آن replaces
را r که appeared وقتی من executed
میانبر r (کوچک).

میانبر x (کوچک).

این shortcut است similar به
میانبر r (کوچک). When من move را
cursor بیش از character من want به delete، من پس از آن press را x کلید،
و character است deleted. این shortcut نیز هست referred به as را
“دکمه حذف”.

این way این shortcut آثار است when من move را cursor بیش از
character من want به delete، و سپس press را x کلید، character
من wanted به delete است deleted. But اگر من want به bring back را
character من دارم deleted، من press (lowercase) u کلید که
executes میانبر (کوچک) u.

میانبر X (بزرگ).

این shortcut (معروف به "Backspace button") حذف می کند characters به
left از cursor، اما not را character آن است highlighting (if آن را
است highlighting یک). So اگر شما delete یک entire line با استفاده از
میانبر X (بزرگ)، except برای
character را cursor است highlighting، شما می توانید press (lowercase)
x کلید، و character خواهد بود removed.

میانبر (کوچک) dw

When من highlight الف word، و سپس press را d به دنبال آن w کلید،
را word است deleted. و if من want به bring back که word، من می خواهم
press (lowercase) u کلید به undo که edit. If، however، من
wanted به replace را word من deleted، من می خواهم want به use
میانبر (کوچک) cw.

In order به highlight الف complete word، من have وارد شدن Visual mode. به
switch از Normal Mode به Visual mode، من first را فشار دهید esc کلید و
سپس (lowercase) v کلید این esc کلید takes من out از Normal mode،
و (lowercase) v کلید takes من به Visual mode. Then، من use
یا forward arrow کلید به highlight را word به right از
cursor، مطمئن شوید که end برجسته کردن after را last character از
word، یا left arrow کلید به do را same در opposite direction.

میانبر (کوچک) cw

When من highlight الف word، و سپس press را c کلید followed توسط
w کلید، word است deleted، و من پس از آن replace آن را با another one.

In order به highlight الف complete word، من have وارد شدن Visual mode. به
switch از Normal Mode به Visual mode، اول من press را esc کلید و
then (lowercase) v کلید این esc کلید takes من out از
Normal mode، و v کلید takes من به Visual mode. Then، استفاده می کنم
either را forward arrow کلید به highlight را word به right از
cursor، مطمئن شوید که end برجسته کردن after را last character از
word، یا left arrow کلید به do را same در opposite direction.

میانبر (کوچک).

When من highlight الف character با cursor و سپس press را s
کلید، من پس press را key از character من want به replace آن را
with.

میانبر S (بزرگ).

When من highlight را location در یک line جایی که من want به start را
edit از من line، and سپس press را Shift کلید + s کلید، آن removes
که content، و then من می توانم type در what من want به replace آن را
with.

میانبر D (بزرگ).

When من place من cursor جایی که من want به start deleting الف line، and
سپس press را Shift + d کلید، آن deletes را line از that point به
را end از line.

میانبر dd (کوچک).

When من select را point از which من want به delete الف line با استفاده از
را cursor، من پس از آن press را d کلید followed توسط pressing را d کلید
again، and را line از location از cursor در، است deleted.
If من place را cursor در beginning از line، entire line
است deleted.

میانبر C (بزرگ).

This است similar به میانبر (بزرگ) D،
اما when من press را Shift کلید + c کلید، after (part of)
line بوده است deleted، من می توانم replace آن را با new content.

میانبر (کوچک) yy

This کار می کند similarly به
میانبر dd (کوچک)، except که
instead از line بودن deleted، it است copied. من first قرار دهید
cursor جایی که من want برای شروع copying را line، و then من press را
(lowercase) y کلید followed توسط pressing (lowercase) y کلید
again، and را part از line من selected (یا complete line اگر
من placed را cursor در beginning از line) است copied به
clipboard.

میانبر p (کوچک).

After من دارم copied الف line (یا part از it) as per
میانبر (کوچک) yy، I press را p
کلید، و line است pasted زیر line من copied.

میانبر P (بزرگ).

After من دارم copied الف line (یا part از it) as per
میانبر (کوچک) yy، I press را Shift
کلید + p کلید، and را line است pasted above را line من copied.

میانبر (کوچک) u

When من press را u کلید، آن undoes را last change من made. من can
همچنین keep در pressing را u کلید در order به keep در undoing قبلی
changes. Once من هستم happy با current state از من file، من can
نوع :w بنابراین that من save این acceptable state. If من want برای خروج
Vim بعد از saving را acceptable state، من would به سادگی press را esc
کلید followed توسط : (Shift key +(;) semi-colon کلید)، and من
would باشد taken back به من Terminal سریع

میانبر Control + r

این Control key + r کلید undoes من undo من executed با
میانبر (کوچک) u. و if من want به
revert به من latest undo، من فقط press (lowercase) u کلید
executing میانبر (کوچک) u.

تکرار دستورات

تکرار یک دستور با استفاده از شمارش

Vim پشتیبانی می کند shortcut repetition در Normal mode. Instead از entering
همان shortcut چندگانه times به repeat را desired action، من می توانم
prefix را same shortcut با number از repetitions. به delete 6
lines، من می خواهم highlight را beginning از line من wanted به start
من deletion با cursor، و then من می خواهم press را 6 کلید
followed توسط d کلید and را d کلید again (6dd). This خواهد شد
delete را line جایی که cursor است located و 5 خطوط after که

به repeat میانبر (کوچک) yy، من می خواهم
highlight را beginning از line من wanted به start من copying
با cursor، و then من می خواهم press را 6 کلید (again،
for example) followed توسط y کلید و y کلید again (6yy).
Next، من می خواهم move را cursor زیر current line و سپس move آن را
5 times بیشتر، برای یک total از 6 خطوط، stopping در last line من
want به copy ( cursor باید appear به "underline" که line).
This خواهد شد copy را line جایی که cursor began و 5 خطوط after
که Lastly، من می خواهم press (lowercase) p کلید، not حرکت دادن
cursor، و this خواهد شد paste را 6 خطوط I copied.

این screenshot زیر shows را first line که من wanted به
start copying از و where من placed را cursor در beginning از
که line، و then فشار دادم 6yy (6 کلید + y کلید + y کلید) در
beginning از line جایی که cursor است located:

اسکرین شات مکان نما در خط ابتدای بلوک برای کپی کردن

این screenshot زیر shows را end line از line block من want به
copy. من moved به این line بعد از من had فشرده شده است 6yy (به عنوان described
بالاتر از first screenshot). من had به take را cursor به line
جایی که من wanted به end را copying process.

اسکرین شات مکان نما در خط انتهای بلوک برای کپی کردن

Then من pressed را p کلید، و 6 خطوط I copied هستند pasted زیر
را lines من copied:

تصویری از نتیجه فرآیند چسباندن

حالت درج

Insert mode اجازه می دهد me به type/insert شخصیت ها just like الف regular
متن editor. من can وارد کنید Insert mode توسط using یک insert shortcut از
Normal mode.

ورود به حالت Insert

There هستند several ways از ورود Insert mode.

میانبر (کوچک) i

When من press را i کلید، من هستم switched به Insert mode. من know من هستم
در Insert mode چون -- Insert --- ظاهر می شود bottom از
window.

اسکرین شات میانبر i (کوچک).

میانبر (بزرگ) I

When من press را Shift کلید + i کلید، من switch به Insert mode، and
را cursor حرکت می کند به beginning از line (اگر باشد not در حال حاضر
there).

ضبط صفحه میانبر I (با حروف بزرگ).

میانبر (کوچک).

[The (lowercase) a shortcut] behavior است almost را same به عنوان
(کوچک) i میانبر. این only difference است
that وقتی من press را a کلید، و زمان -- Insert --- ظاهر می شود
bottom از window، cursor حرکت می کند from را beginning از
line به next character به right.

ضبط روی صفحه نمایش (حروف کوچک) یک میانبر

میانبر (بزرگ) A

When من press را Shift کلید + a کلید، من switch به Insert mode،
و cursor حرکت می کند to را end از line.

توضیحات تصویر

میانبر (کوچک) o

After من press را o کلید، من switch به Insert mode، و cursor
حرکت می کند down به second line، creating یک جدید line space. این contents
از second line منتقل می شود down به third line.

توضیحات تصویر

میانبر (بزرگ) O

When من press را Shift + o کلید، من switch به Insert mode، and را
first line حرکت می کند down به second line، leaving الف line space بر روی
خط اول

تغییر از حالت Insert به حالت عادی

In order به switch از Insert mode به Normal mode، من press را
esc کلید و if من همیشه هستم unsure آیا من am در Normal mode یا not،
من press را esc کلید به make sure.

حالت بصری

I استفاده کنید Visual mode برای انتخاب text، similar به clicking و dragging
با یک mouse. Selecting text اجازه می دهد shortcuts به apply فقط به
selection، مانند copying، deleting، replacingو غیره

وارد شدن به حالت ویژوال

به make الف text selection، first من press (lowercase) v کلید، and
این will همچنین mark را starting انتخاب point. Then من move را
cursor به end selection point، و Vim الف را فراهم می کند visual highlight
از text selection.

میانبر (کوچک) v

این shortcut نیز هست known به عنوان Visual mode visual subtype.

When من want وارد شدن Visual mode visual subtype، من first را فشار دهید esc
کلید به exit هر چه باشد mode من بودم in، و then من press را v کلید، این
switches من به Visual mode، و will همچنین mark را
start selection point. When من move را cursor در سراسر
first line، cursor حرکت می کند character توسط character.

Next، من می توانم use را Up arrow یا (lowercase) k کلید به
select lines رفتن up. As ذکر شده است previously، no موضوع what را
difference در line lengths، lines هستند completely selected. Same
با when من use را Down arrow کلید یا (lowercase) j کلید به
select lines رفتن down.

ISاسکرین شات میانبر (کوچک) v

میانبر (بزرگ) V

این shortcut نیز هست known به عنوان Visual mode line-wise visual subtype.
آن را always انتخاب می کند full lines.

When من press را Shift کلید + v کلید، من switch به Visual mode، و
این makes متن selections خط by خط این است great برای when من
want به select الف block از text در which را lines هستند
different lengths. After من select را first line، و سپس move را
cursor پایین (یا Up arrow کلید به move را cursor بالا)، خواهد شد
select را whole line نه matter را difference در line length.

تصویری از میانبر V (با حروف بزرگ).

میانبر Control + v

این shortcut نیز هست known به عنوان Visual mode block-wise subtype. آن را
selects هر rectangular selection.

When فشار می دهم Control کلید + (lowercase) v کلید، من هستم switched به
Visual mode block-wise subtype. So far، دارم not داشت
appropriate opportunity به use این subtype. So far، contrary به
popular opinion، من find آن را somewhat limiting.

همانطور که opposed به Visual mode visual subtype یا
Visual mode line-wise visual subtype، shortest line است selected و
kept زمانی که هر دو selecting خطوط down یا up. This است زیرا lines
و columns هستند being selected در same time، و columns تشکیل شود
ازlines از equal width.

توضیحات تصویر

حالت فرمان

درخواست کمک از Vim

If من need به find بیرون how انجام دادن something در Vim، من می توانم دسترسی داشته باشم Vim
کمک توسط running را :help فرمان من اول make sure من am در
Normal mode توسط pressing را esc کلید، و then من press را Shift
کلید + (;) semi-colon کلید، و then تایپ میکنم "help". And را following
ظاهر می شود:

توضیحات تصویر

Then من press را Return کلید و following ظاهر می شود:

اسکرین شات از نتیجه فرمان :help

من could همچنین search برای specific help با :help فرمان
For example، می توانستم تایپ کنم :help visual.txt:

اسکرین شات از نتیجه :help visual.txt

When من want به exit را :help یا :help visual.txt فرمان، من first
را فشار دهید esc کلید followed توسط :q! و then را Return کلید، که
takes من out از :help visual.txt فرمان However، من هستم still در
Command mode. If من want به quit به طور کامل out از Vim، I به سادگی
hit را Return کلید again، and هستم taken back به Terminal سریع

If من want به remain در Vim، اما want به exit خارج از Command mode،
instead از pressing را Return کلید الف second time، من press را
(lowercase) i کلید and هستم taken به Insert mode. If من want به
switch به another mode مانند Normal modeمثلا من press را
esc کلید This way، من stay در Vim.

سایر دستورات حالت فرمان

Other حالت فرمان commands (some از which دارند already بوده است
covered):

# Quit file
:q
# write changes to file
:w
# Save and quit
:wq
# Save and quit
:x
# Quit forcefully
:q!
# Save and exit forcefully
:wq!
# Go to first line of file
:1
# Set numbers to lines
:set nu
# Remove numbers from lines
:set nanu
# Specified line number, Same as :1 command, just a different number.
:
# The command output will paste in current cursor position.
:r !date
# Executes shell command "ls" of current working directory in Terminal
:!ls
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

There is زیاد more به Command mode، اما this یک است good start!

شما می توانید dig deeper در Vim توسط checking out مختلف Related Resources.

Vimtutor

By default، Vim نصب کنید includes الف tutorial تماس گرفت vimtutor. هست
meant به help ما learn را Vim اصول اولیه hands-on. ما می توانیم start را
vimtutor توسط running را following command در Terminal:

vimtutor
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

منابع مرتبط

نوشته های مشابه

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا