Get the code: LearnVim.txt
[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: همچنین میتواند بدون option مورد استفاده قرار گیرد.
این یه صورت یک help پیشفرض بالا میآید که شروع vim را قابل دسترس تر میکند!
Modes:
رفتن به حالت 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)
فعل ها (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
رفرنس ها
$ vimtutor
[What are the dark corners of Vim your mom never told you about? (St
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.