Share this page

Learn X in Y minutes

Where X=Vim

[Vim](http://www.vim.org) (Vi رشدیافته) یک کلون از ادیتور مشهور vi است برای unix. ادیتورمتنی‌ست که برای سرعت و افزایش بهره‌وری طراحی شده‌ و در همه جا به ویژه در سیستم های unix-based دیده می‌شود. شورتکات کلید های بی‌شماری برای سرعت جهت‌یابی به نقاط ویژه‌ي فایل ها و تغییر سریع، دارد.
`vimtutor` یک برنامه‌ي عالیست که به شما چگونگی استفاده از `vim` را آموزش می‌دهد. این به همراه پکیج های vim هنگام نصب کردن، نصب می‌شود. شما باید بتوانید با ران کردن `vimtutor` در کامندلاین از آموزش ها استفاده کنید. این همه‌ی ویژگی های عمده‌ی `vim` را به شما راهنمایی می‌کند.

مکان‌یابی اولیه vim

باز کردن `` در ویم

vim <filename>   # Open <filename> in vim

باز کردن help docs های `` اگر وجود داشته باشد

:help <topic>    # Open up built-in help docs about <topic> if any exists 
:q               # خروج از ویم

:w               # ذخیره کردن فایل فعلی

:wq              # ذخیره کردن و خارج شدن از ویم

ZZ               # ذخیره کردن و خارج شدن از ویم

:q!              # خارج شدن بدون ذخیره کردن فایل

! *forces* :q to execute, hence quiting vim without saving

ZQ               # خارج شدن بدون ذخیره کردن فایل

ذخیره کردن و خارج شدن از vim ورژن خلاصه شده‌ی wq:

:x               # Save file and quit vim, shorter version of :wq

برگشت به عقب

 u                # Undo

رفتن به جلو

CTRL+R           # Redo

راه رفتن در صفحه

h                # رفتن یک کاراکتر به چپ

j                # رفتن یک کاراکتر به پایین

k                # رفتن یک کاراکتر به بالا

l                # رفتن یک کاراکتر به راست

Ctrl+B           # جابه‌جا شدن به عقب به اندازه یک صفحه

Ctrl+F           # جابه‌جا شدن به جلو به اندازه یک صفحه

Ctrl+D           # جابه‌جا شدن به جلو به اندازه نصف صفحه

Ctrl+U           # جابه‌جا شدن به عقب به اندازه نصف صفحه

جابه‌جا شدن در خط

0                # رفتن به اول خط
$                # رفتن به آخر خط
^                # رفتن به اولین کاراکتر غیرخالی در خط

جست و جو در متن

/word            # هایلایت کردن همه‌ی کلمه های بعد کِرسر

?word            # هایلایت کردن همه‌ی کلمه های قبل کِرسر

n                # جابه‌جایی کِرسر به کلمه های بعدی پیدا شده

N                # جابه‌جایی کِرسر به کلمه های قبلی پیدا شده

عوض کردن 'foo' به 'bar' در هر خط از فایل

:%s/foo/bar/g    # Change 'foo' to 'bar' on every line in the file

عوض کردن 'foo' به 'bar' در خط فعلی

:s/foo/bar/g     # Change 'foo' to 'bar' on the current line

جایگزینی کاراکتر های خط جدید با کاراکتر های خط جدید

:%s/\n/\r/g      # Replace new line characters with new line characters

پرش به کاراکتر ها

پرش به جلو و قرار گرفتن روی کاراکتر مورد نظر

f<character>     # Jump forward and land on <character>

پرش به جلو و قرار گرفتن قبل کاراکتر مورد نظر

t<character>     # Jump forward and land right before <character>

برای مثال:

پرش به جلو و قرار گرفتن روی >

f<               # Jump forward and land on <

پرش به جلو و قرار گرفتن قبل از >

t<               # Jump forward and land right before <

جابه‌جا شدن با کلمه ها

w                # رفتن به جلو به اندازه‌ی یک کلمه
b                # رفتن به عقب به اندازه‌ی یک کلم
e                # رفتن به آخر کلمه‌ی فعلی

سایر کاراکتر ها برای جابه‌جایی

رفتن به اول فایل

gg               # Go to the top of the file

رفتن به آخر فایل

G                # Go to the bottom of the file

رفتن به شماره‌ی خط مورد نظر (NUM شماره است)

:NUM             # Go to line number NUM (NUM is any number)

رفتن به اول صفحه

H                # Move to the top of the screen

رفتن به وسط صفحه

M                # Move to the middle of the screen

رفتن به آخر صفحه

L                # Move to the bottom of the screen

داک های help

Vim دارای یک help doc داخلی است که می‌توان با help: به آن دسترسی داشت. برای مثال help navigation: داک مربوط به مکان‌یابی در فضای کار را به شما نشان می‌دهد!

help: همچنین می‌تواند بدون option مورد استفاده قرار گیرد. این یه صورت یک help پیش‌فرض بالا می‌آید که شروع vim را قابل دسترس تر می‌کند!

Modes:

Vim بر پایه‌ی مفهومی‌ست به نام modes

  • Command Mode - ویم در این حالت بالا می‌آید،‌ برای مکان‌یابی و نوشتن دستورات استفاده می‌شود
  • Insert Mode - برای ایجاد تغییر در فایل شما استفاده می‌شود
  • Visual Mode - برای هایلایت کردن متن و انجام عملی روی آن ها استفاده می‌شود
  • Ex Mode - برای وارد کردن دستورات توسط ":" در قسمت پایین استفاده می‌شود

رفتن به حالت insert, پیش از جایگاه cursor

i                # Puts vim into insert mode, before the cursor position

رفتن به حالت insert, پس از جایگاه cursor

a                # Puts vim into insert mode, after the cursor position

رفتن به حالت visual

v                # Puts vim into visual mode

رفتن به حالت ex

:                # Puts vim into ex mode

خروج از همه‌ی حالت ها و رفتن به حالت command

<esc>            # 'Escapes' from whichever mode you're in, into Command mode

کپی و پیست در متن

y                # کپی کردن متن انتخاب شده

yy               # کپی کردن خط فعلی

d                # حذف کردن متن انتخاب شده

dd               # حذف کردن خط فعلی

p                # پیست کردن متن کپی شده پس از جایگاه فعلی کِرسر

P                # پیست کردن متن کپی شده پیش از جایگاه فعلی کِرسر

x                # حذف کردن یک کاراکتر از جایگاه کِرسر

گرامر (Grammer)

Vim را می توان به عنوان مجموعه ای از دستورات در قالب (Verb - Modifier - Noun) تصور کرد ، جایی که:

  • Verb - عمل شما
  • Modifier - چگونگی انجام عمل شما
  • Noun - شیئی که عمل شما بر اساس آن عمل می کند
اندکی از مثال های مهم Verbs ,Modifiers, Nouns:

فعل ها (Verbs)

d                # حذف
c                # تغییر
y                # کپی
v                # انتخاب 

تغییردهنده ها (Modifiers)

i                # داخل
a                # اطراف
NUM              # شماره (NUM هر شماره‌ای است)
f                # جست و جو کردن چیزی و متوقف شدن روی آن
t                # جست و جو کردن چیزی و متوقف شدن قبل از آن
/                # جست و جو کردن رشته‌ای پس از کِرسر
?                # جست و جو کردن رشته‌ای پیش از کِرسر

اسم ها (Nouns)

w                # کلمه
s                # جمله
p                # پاراگراف
b                # بلوک

جمله ها و کامند های نمونه

d2w              # حذف دو کلمه
cis              # تغییر داخل جمله
yip              # کپی داخل پاراگراف (از پاراگرافی که داخل آن هستید کپی کنید)
ct<              # متن را از جایی که قرار دارید به براکت باز بعدی تغییر دهید
d$               # حذف تا پایان

بعضی از شورتکات ها و ترفند ها

<!--TODO: Add more!-->

>                # ایجاد دندانه به اندازه یک بلوک

<                # حذف دندانه به اندازه یک بلوک

:earlier 15m     # برگرداندن همه چیز به ۱۵ دقیقه قبل
    
:later 15m       # برعکس کامند قبلی
    
ddp              # تغییر مکان خطوط متوالی(dd, then p)
    
.                # تکرار دستور قبلی
    
:w !sudo tee %   # ذخیره کردن فایل فعلی به عنوان روت
    
:set syntax=c    # تنظیم سینتکس هایلایتینگ روی 'c'
    
:sort            # مرتب کردن همه‌ی خطوط
    
:sort!           # مرتب کردن همه‌ی خطوط به صورت برعکس

:sort u          # مرتب کردن همه‌ی خطوط و پاک کردن تکراری ها

~                # تبدیل متن انتخاب شده به حروف (اگر بزرگ است، کوچک و اگر کوچک است، بزرگ)

u                # تبدیل متن انتخاب شده به حروف کوچک

U                # تبدیل متن انتخاب شده به حروف بزرگ

J                # اتصال خط فعلی به خط بعدی

فولد (Fold)

zf               # ایجاد فولد برای متن انتخاب شده
zo               # باز کردن فولد فعلی
zc               # بستن فولد فعلی
zR               # باز کردن همه‌ی فولد ها
zM               # بستن همه‌ی فولد ها 

ماکرو ها (Macros)

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

qa               # Start recording a macro named 'a'
q                # Stop recording
@a               # Play back the macro

کانفیگ vimrc./~

vimrc. فایلی‌ست که استفاده می‌شود برای کانفیگ vim هنگام بالا آمدن
این‌جا یک نمونه‌ فایل vimrc. آورده شده:

" Example ~/.vimrc
" 2015.10

" Required for vim to be iMproved
set nocompatible

" Determines filetype from name to allow intelligent auto-indenting, etc.
filetype indent plugin on

" Enable syntax highlighting
syntax on

" Better command-line completion
set wildmenu

" Use case insensitive search except when using capital letters
set ignorecase
set smartcase

" When opening a new line and no file-specific indenting is enabled,
" keep same indent as the line you're currently on
set autoindent

" Display line numbers on the left
set number

" Indentation options, change according to personal preference

" Number of visual spaces per TAB
set tabstop=4

" Number of spaces in TAB when editing
set softtabstop=4

" Number of spaces indented when reindent operations (>> and <<) are used
set shiftwidth=4
" Convert TABs to spaces
set expandtab

" Enable intelligent tabbing and spacing for indentation and alignment
set smarttab

رفرنس ها

Vim | Home

$ vimtutor

A vim Tutorial and Primer

[What are the dark corners of Vim your mom never told you about? (St

Arch Linux Wiki


Got a suggestion? A correction, perhaps? Open an Issue on the GitHub Repo, or make a pull request yourself!

Originally contributed by RadhikaG, and updated by 2 contributors.