فرمان های کلی

  • :h[elp] کلید واژه - کمک در مورد کلمه کلیدی
  • :sav[eas] فایل - ذخیره کردن با عنوان
  • :clo[se] - بستن پنل فعلی
  • :ter[minal] - یک پنجره ترمینال را باز کن
  • K - برای کلمه زیر مکان‌نما، یک صفحه راهنما باز کن
Tip دستور vimtutor را در یک ترمینال جدید اجرا کنید تا دستورات ابتدایی را یاد بگیرید.

حرکت مکان نما

  • h - حرکت مکان نما به سمت چپ
  • j - حرکت مکان نما به سمت پایین
  • k - حرکت مکان نما به سمت بالا
  • l - حرکت مکان نما به سمت پایین
  • gj - move cursor down (multi-line text)
  • gk - move cursor up (multi-line text)
  • H - برو به ابتدای نمایشگر
  • M - برو به وسط نمایشگر
  • L - برو به آخر نمایشگر
  • w - برو به ابتدای کلمه
  • W - برو به ابتدای کلمه(کلمه هایی که شامل نقطه و علامت)
  • e - برو به آخر کلمه
  • E - برو به آخر کلمه (کلمه هایی که شامل نقطه و علامت)
  • b - برو به ابتدای کلمه
  • B - برو به ابتدای کلمه(کلمه هایی که شامل نقطه و علامت)
  • ge - پرش رو به عقب تا انتهای کلمه
  • gE - پرش رو به عقب تا انتهای کلمه (کلمات می‌توانند شامل نقطه‌گذاری‌ها باشند)
  • % - برو به براکت بسته(براکت ها می توانند '()','{}','[]' باشند)
  • 0 - برو به ابتدای خط
  • ^ - برو به اولین کاراکتر با صرف نظر از فضای خالی
  • $ - برو به انتهای خط
  • g_ - برو به آخرین کاراکتر غیر بلاک
  • gg - برو به اولین خط این فایل
  • G - برو به آخرین خط این فایل
  • 5gg or 5G - برو به خط شماره 5
  • gd - حرکت روی تعریف (اعلام) محلی
  • gD - حرکت روی تعریف (اعلام) سرتاسری
  • fx - برو به کاراکتر x
  • tx - برو به یک کاراکتر قبل از x
  • Fx - برو به کاراکتر x قبل از محل فعلی مکان نما
  • Tx - برو به یک کاراکتر بعد از کاراکتر x قبل از محل فعلی مکان نما
  • ; - تکرار عملیات قبلی اگر این عملیات F,f,T,t باشد
  • , - مثل سمی کالمن اما برعکس
  • } - برو به پاراگراف بعدی( یا تابع بعدی/ یابلاک بعدی)
  • { - برو به پاراگراف قبلی( یا تابع قبلی/ یا بلاک قبلی)
  • zz - قرار دادن خط فعلی در مرکز صفحه نمایش
  • zt - position cursor on top of the screen
  • zb - position cursor on bottom of the screen
  • Ctrl + e - یک خط به پایین
  • Ctrl + y - یک خط به بالا
  • Ctrl + b - صفحه قبل
  • Ctrl + f - صفحه بعد
  • Ctrl + d - یک نیم صفحه بعد
  • Ctrl + u - یک نیم صفحه قبل
Tip برای تکرار دستورهای حرکتی از پیشوند استفاده کنید. برای مثال 4j به 4 خط پایین تر می رود.

افزودن و اضافه کردن

  • i - اضافه کن به قبل از مکان فعلی مکان نما
  • I - اضافه کن به ابتدای خط
  • a - اضافه کن بعد از مکان فعلی مکان نما
  • A - اضافه کن به انتهای خط
  • o - اضافه کن به خط بعدی
  • O - اضافه کن به خط قبلی
  • ea - اضافه کن به انتهای کلمه
  • Ctrl + h - حذف کاراکتر قبل مکان‌نما، در مُد درج
  • Ctrl + w - حذف کلمه قبل مکان‌نما، در مُد درج
  • Ctrl + j - ایجاد خط جدید، در مُد درج
  • Ctrl + t - indent (move right) line one shiftwidth during insert mode
  • Ctrl + d - de-indent (move left) line one shiftwidth during insert mode
  • Ctrl + n - insert (auto-complete) next match before the cursor during insert mode
  • Ctrl + p - insert (auto-complete) previous match before the cursor during insert mode
  • Ctrl + rx - insert the contents of register x
  • Ctrl + ox - Temporarily enter normal mode to issue one normal-mode command x.
  • Esc or Ctrl + c - از مُد درج خارج شو

تصحیح

  • r - یک کاراکتر را جایگزین کن
  • R - replace more than one character, until ESC is pressed.
  • J - خط بعدی را به خط فعلی بچسبان با فاصله
  • gJ - خط بعدی را بدون فاصله به خط فعلی بچسبان
  • gwip - جمع کردن پاراگراف
  • g~ - switch case up to motion
  • gu - change to lowercase up to motion
  • gU - change to uppercase up to motion
  • cc - خط فعلی را جایگزین کن
  • c$ or C - از مکان فعلی تا آخر خط را جایگزین کن
  • ciw - خط فعلی را جایگزین کن
  • cw or ce - کلمه فعلی را جایگزین کن
  • s - کاراکتر فعلی را جایگزین کن
  • S - خط فعلی را جایگزین کن(مثل cc)
  • xp - ترانهادن دو کاراکتر(پاک کردن و چسباندن)
  • u - بازگرداندن
  • U - بازگرداندن تغییرات آخرین خط تغییرکرده
  • Ctrl + r - دوباره انجام بده
  • . - فرمان قبلی را تکرار کن

علامت گذاری(مد بصری)

  • v - ورود به مد بصری
  • V - ورود به مد بصری برای کار روی خط
  • o - برو به طرف دیگر ناحیه علامت گذاری شده
  • Ctrl + v - ورود به مد بصری برای علامت گذاری یک بلاک
  • O - برو به گوشه دیگر بلاک انتخاب شده
  • aw - یک کلمه را علامت گذاری کن
  • ab - یک بلاکت با ()
  • aB - یک بلاک با {}
  • at - a block with <> tags
  • ib - بلاک داخل ()
  • iB - بلاک داخل {}
  • it - inner block with <> tags
  • Esc or Ctrl + c - از مد بصری خارج شو
Tip Instead of b or B one can also use ( or { respectively.

دستورات مد بصری

  • > - حرکت متن به سمت راست
  • < - حرکت متن به سمت چپ
  • y - کپی کردن متن
  • d - حذف متن
  • ~ - تغییر از حرف کوچک به بزرگ یا برعکس
  • u - تغییر متن مشخص‌شده به حروف کوچک
  • U - تغییر متن مشخص‌شده به حروف بزرگ

رجیسترها

  • :reg[isters] - محتوای رجیستر را نمایش بده
  • "xy - محتوای رجیستر x را پیست کن
  • "xp - کپی کردن به رجیستر x
  • "+y - کپی‌کردن (یانک) در رجیستر کلیپ‌بورد سیستم
  • "+p - چسباندن به وسیلیه رجیستر کلیپ‌بورد سیستم
Tip محتوای رجیستر ها در فایل ~/.viminfo ذخیره می شوند و بعد از ریستارت برنامه به آنها دسترسی دارید.
Tip ثبات‌های ویژه:

0 - آخرین یانک (کپی)
" - unnamed register, last delete or yank
% - نام فایل جاری
# - alternate file name
* - clipboard contents (X11 primary)
+ - clipboard contents (X11 clipboard)
/ - آخرین پترن سرچ
: - آخرین خط دستور
. - آخرین متن درج‌شده
- - آخرین حذف کوچیک (کمتر از یک خط)
= - expression register
_ - black hole register

علامت ها

  • :marks - لیست علامت ها
  • ma - مکان فعلی را به عنوان علامت a نشان کن
  • `a - برو به مکانی که به عنوان a نشان شده است
  • y`a - متن را به مکانی که به عنوان a نشان شده کپی کن
  • `0 - برو به مکانی که قبلا ویم از در آنجا خارج شده است.
  • `" - go to the position when last editing this file
  • `. - برو به مکانی که آخرین تغییر در این فایل انجام شده است.
  • `` - برو به مکانی که قبل از آخرین پرش بودی
  • :ju[mps] - لیست پرش‌ها
  • Ctrl + i - برو به مکان جدید‌تر در لیست پرش
  • Ctrl + o - برو به مکان قدیمی‌تر در لیست پرش
  • :changes - لیست تغییرات
  • g, - برو به مکان جدیدتر در لیست تغییر
  • g; - برو به مکان قدیمی‌تر در لیست تغییر
  • Ctrl + ] - پرش به برچسب زیر مکان‌نما
Tip To jump to a mark you can either use a backtick (`) or an apostrophe ('). Using an apostrophe jumps to the beginning (first non-blank) of the line holding the mark.

ماکروها

  • qa - ضبط ماکرو 'a'
  • q - توقف ضبط ماکرو
  • @a - اجرای ماکروی 'a'
  • @@ - اجرای دوباره آخرین ماکروی اجرا شده

کپی کردن و چسباندن

  • yy - کپی کردن هط
  • 2yy - کپی کردن 2 خط
  • yw - کپی کردن از مکان فعلی مکان نما تا ابتدای کلمه بعد
  • yiw - کپی کردن کلمه
  • yaw -
  • y$ or Y - کپی کردن تا آخری خط
  • p - چسباندن محتوای کلیپ بورد بعد از مکان فعلی مکان نما
  • P - چسباندن محتوای کلیپ بورد قبل از مکان فعلی مکان نما
  • gp - put (paste) the clipboard after cursor and leave cursor after the new text
  • gP - put (paste) before cursor and leave cursor after the new text
  • dd - کات کردن خط فعلی
  • 2dd - کات کردن دو خط
  • dw - کات کردن از مکان فعلی مکان نما تا ابتدای کلمه بعدی
  • diw -
  • daw -
  • :3,5d - delete lines starting from 3 to 5
Tip You can also use the following characters to specify the range:
e.g.

:.,$d - From the current line to the end of the file
:.,1d - From the current line to the beginning of the file
:10,$d - From the 10th line to the beginning of the file

  • :g/{pattern}/d - delete all lines containing pattern
  • :g!/{pattern}/d - delete all lines not containing pattern
  • d$ or D - کات کردن تا انتهای خط
  • x - کات کردن یک کاراکتر

تو رفتنگی متن

  • >> - indent (move right) line one shiftwidth
  • << - de-indent (move left) line one shiftwidth
  • >% - indent a block with () or {} (cursor on brace)
  • <% - de-indent a block with () or {} (cursor on brace)
  • >ib - indent inner block with ()
  • >at - indent a block with <> tags
  • 3== - تنظیم مجدد تو رفتگی ۳ خط
  • =% - re-indent a block with () or {} (cursor on brace)
  • =iB - re-indent inner block with {}
  • gg=G - تنظیم مجدد تورفتنگی کل بافر
  • ]p - چسباندن و تنظیم تو رفتگی برای خط کنونی

خارج شدن

  • :w - ذخیره کن اما خارج نشو
  • :w !sudo tee % - فایل فعلی را با sudo ذخیره کن
  • :wq or :x or ZZ - ذخیره کن و خارج شو
  • :q - خارج شو(اگر فایلهای ذخیره نشده باشد) خطا میدهد
  • :q! or ZQ - خارج شو و از فایلهای ذخیره نشده صرف نظر کن
  • :wqa - همه ها فایلها در همه ی تبها را ذخیره کن و خارج شو

جستجو و جایگذاری

  • /pattern - جستجوی الگو
  • ?pattern - جستجوی الگو از مکان فعلی مکان نما به قبل
  • \vpattern - الگوی 'very magic': حروف و اعداد غیر به عنوان regex شناخته می شوند
  • n - تکرار جستجو در جهت یکسان
  • N - تکرار جستجو در جهت مخالف
  • :%s/old/new/g - جایگذاری الگوی قدیمی با الگوی جدید
  • :%s/old/new/gc - جایگذاری الگوی قدیمی با الگوی جدید در تمامی فایل به همراه تایید
  • :noh[lsearch] - برداشتن هایلایت از نتایج جستجو

جستجو در چند فایل

  • :vim[grep] /pattern/ {`{file}`} - جستجوی الگو در چند فایل
e.g. :vim[grep] /foo/ **/*
  • :cn[ext] - برو به نتیجه بعدی
  • :cp[revious] - برو به نتیجه قبلی
  • :cope[n] - باز کردن یک پنجره که شامل لیست نتایج جستجو باشد
  • :ccl[ose] - بستن پنجره تعمیر سریع

تب ها

  • :tabnew or :tabnew {page.words.file} - باز کردن فایل در تب جدید
  • Ctrl + wT - انتقال بافر فعلی به تب جدید
  • gt or :tabn[ext] - برو به تب بعدی
  • gT or :tabp[revious] - برو به تب قبلی
  • #gt - برو به تب شماره #
  • :tabm[ove] # - انتقال تب فعلی به موقعیت #
  • :tabc[lose] - بستن تب فعلی و تمام پنجره های آن
  • :tabo[nly] - بستن تمامی تبها غیر از تب فعلی
  • :tabdo command - اجرای دستور روی تمامی تبها

کار کردن با چند فایل

  • :e[dit] فایل - کار کردن با یک فایل در بافر جدید
  • :bn[ext] - برو به بافر بعدی
  • :bp[revious] - برو به بافر قبلی
  • :bd[elete] - بستن بافر(بسته شدن فایل)
  • :b[uffer]# - با استفاده از هشتگ (#) به بافر برو
  • :b[uffer] file - با استفاده از فایل به بافر برو
  • :ls or :buffers - لیست تمامی بافرهای باز
  • :sp[lit] فایل - باز کردن فایل در پنجره جدید و به دو قسمت کردن پنجره
  • :vs[plit] فایل - باز کردن فایل در پنجره جدید و به دو قسمت کردن پنجره به صورت عمودی
  • :vert[ical] ba[ll] - پیرایش تمامی بافرها با استفاده از پنجره‌های عمودی
  • :tab ba[ll] - ویرایش تمامی بافرها با استفاده از تب‌‌ها
  • Ctrl + ws - به دو قسمت کردن پنجره
  • Ctrl + wv - به دو قسمت کردن به صورت عمودی
  • Ctrl + ww - سوئیچ کردن مابین پنجره ها
  • Ctrl + wq - خارج شدن از پنجره
  • Ctrl + wx - تعویض پنجره فعلی با بعدی
  • Ctrl + w= - مساوی‌کردن طول و عرض تمامی پنجره‌ها
  • Ctrl + wh - انتقال مکان نما به پنجره سمت چپ
  • Ctrl + wl - انتقال مکان نما به پنجره سمت راست
  • Ctrl + wj - انتقال مکان نما به پنجره پایین
  • Ctrl + wk - انتقال مکان نمابه پنجره بالا
  • Ctrl + wH - make current window full height at far left (leftmost vertical window)
  • Ctrl + wL - make current window full height at far right (rightmost vertical window)
  • Ctrl + wJ - make current window full width at the very bottom (bottommost horizontal window)
  • Ctrl + wK - make current window full width at the very top (topmost horizontal window)

مقایسه کردن

  • zf - تا آخرین خط انتخابی یک پنهان گر کد بساز
  • zd - پنهان گر کد زیر مکان نما را حذف من
  • za - پنهانگر کد زیر مکان نما را باز و بسته کن
  • zo - پنهانگر کد زیر مکان نما را باز کن
  • zc - پنهانگر کد زیر مکان نما را ببند
  • zr - همه پنهانگر های کد را یک مرتبه باز کن
  • zm - همه پنهانگر های کد را یک مرتبه باز ببند
  • zi - toggle folding functionality
  • ]c - jump to start of next change
  • [c - jump to start of previous change
  • do or :diffg[et] - obtain (get) difference (from other buffer)
  • dp or :diffpu[t] - put difference (to other buffer)
  • :diffthis - make current window part of diff
  • :dif[fupdate] - update differences
  • :diffo[ff] - switch off diff mode for current window
Tip The commands for folding (e.g. za) operate on one level. To operate on all levels, use uppercase letters (e.g. zA).
Tip To view the differences of files, one can directly start Vim in diff mode by running vimdiff in a terminal. One can even set this as git difftool.