--- category: tool tool: vim contributors: - ["RadhikaG", "https://github.com/RadhikaG"] translators: - ["Moein Halvaei", "https://github.com/mo1ein"] lang: fa-ir filename: LearnVim-fa.txt ---

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

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

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

``` vim # Open in vim ```

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

``` :help # Open up built-in help docs about 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 # Jump forward and land on ```

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

``` t # Jump forward and land right before ```

برای مثال:

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

``` 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

``` # '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$ # حذف تا پایان ```

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

``` > # ایجاد دندانه به اندازه یک بلوک < # حذف دندانه به اندازه یک بلوک :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. آورده شده:

```vim " 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](http://www.vim.org/index.php) `$ vimtutor` [A vim Tutorial and Primer](https://danielmiessler.com/study/vim/) [What are the dark corners of Vim your mom never told you about? (St [Arch Linux Wiki](https://wiki.archlinux.org/index.php/Vim)