” اگر با لینوکس یا سرور کار میکنی، دیر یا زود مجبور میشی داخل ترمینال فایل ویرایش کنی. توی این مقاله بهصورت ساده و کاربردی با ویرایشگرهای nano، vim و neovim آشنا میشی.. “
تو دنیای لینوکس و سرور، یه روزی میرسه که دیگه نمیتونی از VS Code یا ویرایشگرهای معمولی استفاده کنی. یا باید یه فایل config رو روی سرور عوض کنی، یا یه اسکریپت رو سریع ادیت کنی. اینجاست که باید دست به دامن ویرایشگرهای ترمینال بشی!
قبل از هر چیزی، بذار بگم چرا این موضوع انقدر مهمه:
وقتی روی سرور کار میکنی (مثل VPS یا سرور اختصاصی)
وقتی SSH کردی به دستگاه دیگهای
وقتی GUI (محیط گرافیکی) نداریم (مثل سرورهای Headless)
وقتی میخوای سریع یه فایل رو ویرایش کنی (بدون باز کردن ویرایشگر سنگین)
nano - سادهترین، برای شروع عالیه
vim - قدرتمندترین، کمی یادگیری میخواد
neovim - نسخه مدرن vim با امکانات بیشتر
بیاین از آسونترین شروع کنیم...
اگر تازهکار هستی یا میخوای سریع یه فایل رو ادیت کنی، nano بهترین انتخابه.
# باز کردن یه فایل
nano filename.txt
# باز کردن با شماره خط
nano -c filename.txt
# اگر فایل وجود نداشته باشه، خودش میسازه
nano newfile.txtوقتی nano رو باز کنی، یه صفحه ساده میبینی که پایینش یه سری دستور نشون داده شده:
^G Get Help ^O Write Out ^W Where Is ^K Cut Text ^J Justify ^C Cur Pos ^Y Prev Page
^X Exit ^R Read File ^\ Replace ^U Uncut Text ^T To Spell ^_ Go To Line ^V Next Pageاین ^ یعنی دکمه Ctrl. پس:
^X = Ctrl + X (برای خروج)
^O = Ctrl + O (برای ذخیره)
^G = Ctrl + G (راهنما)
فلشها: بالا، پایین، چپ، راست
Ctrl + F: یک کلمه جلو
Ctrl + B: یک کلمه عقب
Ctrl + A: برو اول خط
Ctrl + E: برو آخر خط
Ctrl + Y: به صفحه قبل
Ctrl + V: به صفحه بعد
فقط تایپ کن! مثل هر ویرایشگر دیگهای
Ctrl + K: حذف خط (Cut)
Ctrl + U: paste کردن خط حذف شده
Ctrl + \: جستجو و replace کردن
Alt + U: undo
Alt + E: redo
تو nano معمولاً undo/redo بسته به نسخه فعاله
Ctrl + O: ذخیره کردن (Write Out)
بعد از زدن Ctrl + O، اسم فایل رو تأیید کن و Enter بزن
Ctrl + X: بستن ویرایشگر
اگر تغییرات ذخیره نشده باشه، ازت میپرسه:
Save modified buffer? (Answering "No" will DISCARD changes.)
Y Yes
N No ^C Cancelفرض کنیم میخوایم یه فایل config برای Nginx بسازیم:
# اول فایل رو ایجاد میکنیم
nano /etc/nginx/sites-available/my-site
# حالا این محتوا رو تایپ میکنیم:
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}
# حالا:
# 1. Ctrl + O میزنیم برای ذخیره
# 2. Enter میزنیم برای تأیید اسم فایل
# 3. Ctrl + X میزنیم برای خروجnano -Y sh script.sh # برای اسکریپت bash
nano -Y python app.py # برای پایتون
nano -Y xml data.xml # برای XML# باز کردن فایل در خط ۱۵
nano +15 filename.txt
# باز کردن و رفتن به آخر فایل
nano + filename.txtnano -B filename.txt # قبل از ذخیره، backup میگیره✅ یادگیری آسون
✅ دستورات پایین صفحه نشون داده میشن
✅ برای کارهای سریع عالیه
❌ امکانات محدود
❌ برای ویرایش فایلهای بزرگ مناسب نیست
❌ کلیدهای ترکیبی کم
اگر با برنامهنویسی یا ادمینشدن جدی هستی، vim رو باید یاد بگیری. vim مثل یه زبان برنامهنویسی برای ویرایش متنه!
vim سه حالت (mode) اصلی داره:
حالت نرمال (Normal mode): برای حرکت و دستورات
حالت درج (Insert mode): برای تایپ کردن
حالت بصری (Visual mode): برای انتخاب متن
وقتی vim رو باز میکنی، به طور پیشفرض در حالت نرمال هستی.
vim filename.txt # باز کردن فایل
vim file1.txt file2.txt # باز کردن چند فایل
vim +10 filename.txt # باز کردن در خط ۱۰
vim +/search filename.txt # باز کردن در محل کلمه جستجو شدهاینجا نمیتونی تایپ کنی! فقط میتونی حرکت کنی یا دستور بدی.
برای تایپ کردن. با فشار دادن i وارد این حالت میشی.
برای انتخاب متن. با فشار دادن v وارد این حالت میشی.
h ← (چپ)
j ↓ (پایین)
k ↑ (بالا)
l → (راست)
بهتره به جای فلشها، از این کلیدها استفاده کنی تا دستت از home row دور نشه.
w - برو اول کلمه بعدی
b - برو اول کلمه قبلی
e - برو آخر کلمه فعلی
0 (صفر) - برو اول خط
$ - برو آخر خط
gg - برو اول فایل
G - برو آخر فایل
50G - برو خط ۵۰
Ctrl + f - صفحه بعد
Ctrl + b - صفحه قبل
i - درج در مکان فعلی
I - درج در اول خط
a - درج بعد از کاراکتر فعلی
A - درج در آخر خط
o - باز کردن خط جدید پایین
O - باز کردن خط جدید بالا
x - حذف کاراکتر زیر cursor
dw - حذف از مکان فعلی تا اول کلمه بعدی
d$ یا D - حذف از مکان فعلی تا آخر خط
dd - حذف کل خط
3dd - حذف ۳ خط از مکان فعلی
yy - کپی خط (yank)
yw - کپی کلمه
y$ - کپی تا آخر خط
p - پیست بعد از مکان فعلی
P - پیست قبل از مکان فعلی
u - undo
Ctrl + r - redo
/کلمه - جستجو به جلو
?کلمه - جستجو به عقب
n - رفتن به مورد جستجوی بعدی
N - رفتن به مورد جستجوی قبلی
fکاراکتر - پیدا کردن کاراکتر در خط به جلو
Fکاراکتر - پیدا کردن کاراکتر در خط به عقب
; - تکرار آخرین جستجوی f یا F
, - تکرار آخرین جستجوی f یا F در جهت مخالف
: شروع میشن)::w - ذخیره (write)
:q - بستن (quit)
:wq یا :x یا ZZ - ذخیره و بستن
:q! - بستن بدون ذخیره (force quit)
:w filename - ذخیره با اسم جدید
:e filename - باز کردن فایل جدید
بیاین با هم یه اسکریپت bash بنویسیم:
# فایل رو ایجاد میکنیم
vim backup-script.shحالا داخل vim:
اول i میزنیم تا وارد حالت درج بشیم
این کد رو تایپ میکنیم:
#!/bin/bash
# Backup script
BACKUP_DIR="/backup"
SOURCE_DIR="/var/www"
DATE=$(date +%Y-%m-%d)
echo "Starting backup..."
tar -czf "$BACKUP_DIR/backup-$DATE.tar.gz" "$SOURCE_DIR"
if [ $? -eq 0 ]; then
echo "Backup completed successfully!"
else
echo "Backup failed!"
exit 1
fiEsc میزنیم تا به حالت نرمال برگردیم
:wq تایپ میکنیم و Enter میزنیم
. - تکرار آخرین دستور ویرایش
10dd - حذف ۱۰ خط
5p - ۵ بار پیست کن
:%s/قدیم/جدید/g - جایگزینی همه در کل فایل
:%s/قدیم/جدید/gc - جایگزینی با تأیید
:s/قدیم/جدید/ - جایگزینی در خط فعلی
:sp filename - تقسیم افقی
:vsp filename - تقسیم عمودی
Ctrl + w سپس hjkl - حرکت بین پنجرهها
Ctrl + w سپس + - افزایش ارتفاع
Ctrl + w سپس - - کاهش ارتفاع
:n - فایل بعدی
:N یا :prev - فایل قبلی
:args - نمایش همه فایلها
:bn - buffer بعدی
:bp - buffer قبلی
میتونی vim رو به دلخواه خودت تنظیم کنی. فایل ~/.vimrc رو ایجاد کن:
" ~/.vimrc
" تنظیمات پایه
set number " نمایش شماره خط
set relativenumber " نمایش شماره خط نسبی
syntax on " هایلایت سینتکس
set tabstop=4 " اندازه tab
set shiftwidth=4 " اندازه indentation
set expandtab " تبدیل tab به space
set autoindent " auto indentation
" جستجو
set ignorecase " حساس نبودن به حروف
set smartcase " اگر حروف بزرگ داشت، حساس باشه
set incsearch " جستجوی هنگام تایپ
set hlsearch " هایلایت نتایج جستجو
" کیفیت زندگی
set mouse=a " فعال کردن ماوس
set clipboard=unnamedplus " اشتراک clipboard با سیستم
set backspace=indent,eol,start " backspace بهتر
" کلیدهای میانبر
nnoremap <C-s> :w<CR> " Ctrl+s برای ذخیره
inoremap <C-s> <Esc>:w<CR>i
nnoremap <leader>q :q<CR>vim یه آموزش تعاملی داره که میتونی توی ترمینال اجراش کنی:
vimtutor # انگلیسی
vimtutor fa # فارسی (اگه باشه)حدود ۳۰ دقیقه وقت بذار و vimtutor رو کامل انجام بده. معجزه میکنه!
✅ فوقالعاده سریع
✅ روی هر سیستمی هست
✅ پلاگینهای بینهایت
✅ برای کارهای تکراری عالیه
❌ حالتهای مختلف گیجکنندهست
❌ برای شروع سخته
Neovim یه fork از vim هست که هدفش بهتر کردن معماری و اضافه کردن امکانات مدرنه.
LSP (Language Server Protocol) پشتیبانی داخلی
Lua برای تنظیمات و پلاگینها
آسانتر برای توسعه
پرفورمنس بهتر
پشتیبانی از ترمینال داخلی
# روی Ubuntu/Debian
sudo apt install neovim
# روی Fedora
sudo dnf install neovim
# روی macOS با Homebrew
brew install neovim
# روی Arch
sudo pacman -S neovimnvim filename.txt # دقیقاً مثل vimتمام دستورات vim اینجا هم کار میکنن! پس اگه vim بلدی، neovim رو هم بلدی.
:terminal # باز کردن ترمینال
:term bash # ترمینال با bash
Ctrl + \ سپس n # خروج از ترمینالبا package managerهایی مثل Packer:
-- در فایل ~/.config/nvim/init.lua
require('packer').startup(function(use)
use 'wbthomason/packer.nvim' -- خود پکر
use 'nvim-tree/nvim-tree.lua' -- فایل اکسپلورر
use 'nvim-treesitter/nvim-treesitter' -- سینتکس بهتر
use 'neovim/nvim-lspconfig' -- LSP
end)-- ~/.config/nvim/init.lua
vim.opt.number = true
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
-- کلیدهای میانبر
vim.api.nvim_set_keymap('n', '<leader>ff', ':Telescope find_files<CR>', { noremap = true })اگه میخوای سریع شروع کنی، این پیکربندی پایه رو استفاده کن:
# ایجاد پوشه تنظیمات
mkdir -p ~/.config/nvim
# ایجاد فایل تنظیمات پایه
nvim ~/.config/nvim/init.vimداخلش این تنظیمات رو بذار:
" تنظیمات پایه
set number
syntax on
set mouse=a
" tab و space
set tabstop=4
set shiftwidth=4
set expandtab
" جستجو
set ignorecase
set smartcase
set incsearch
set hlsearch
" کلیدهای میانبر
nnoremap <leader>s :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <leader>wq :wq<CR>✅ همه چیز vim رو داره
✅ معماری مدرنتر
✅ جامعه فعالتر
✅ پلاگینهای جدیدتر
✅ LSP داخلی
❌ هنوز کامل با vim سازگار نیست
❌ بعضی پلاگینهای خیلی قدیمی vim ممکنه نیاز به جایگزین داشته باشن
❌ نیاز به تنظیمات جدید داره
# اگر:
# - فقط میخوای یه فایل config رو ویرایش کنی
# - روی سرور کار میکنی
# - وقت یادگیری نداری
✅ nano بهترین انتخابته# اگر:
# - روزانه با ترمینال کار میکنی
# - میخوای productivity ات بالا بره
# - حاضر یه هفته وقت بذاری برای یادگیری
✅ vim رو یاد بگیر# اگر:
# - از vim خسته شدی
# - میخوای از LSP استفاده کنی
# - دوست داری با Lua کانفیگ کنی
✅ برو سراغ neovimباز کردن: nano فایل
ویرایش: مثل Notepad تایپ کن
ذخیره: Ctrl + O
خروج: Ctrl + X
باز کردن: vim فایل
برای تایپ: i بزن، بعد تایپ کن
برای ذخیره: Esc سپس :w
برای خروج: Esc سپس :q
برای ذخیره و خروج: Esc سپس :wq
در nano: Ctrl + G (راهنما)
در vim: :help
در neovim: :help
برای فرار اضطراری: Esc سپس :q!
برای اینکه واقعاً یاد بگیری، این تمرینها رو انجام بده:
یه فایل txt با nano بساز و چند خط توش بنویس
یه فایل bash script با nano بساز
یه فایل Python با nano بساز
vimtutor رو کامل انجام بده
فایل .vimrc خودت رو بساز
با vim یه پروژه کوچک بنویس
neovim رو نصب کن
فایل init.lua رو تنظیم کن
یه پلاگین نصب کن (مثل nvim-tree)
نترس از vim - همه اولش گیج میشن
تمرین روزانه - حتی ۱۰ دقیقه
از cheat sheet استفاده کن - کنار دستت باشه
کمکم امکانات رو اضافه کن - یهدفعه همه چی رو یاد نگیر
# ذخیره کنشون کناری!
https://vim.rtorr.com/ # vim cheat sheet
https://nanocheat.org/ # nano cheat sheet
https://neovim.io/doc/user/ # مستندات neovimروی YouTube: "Vim in 100 seconds"
روی YouTube: "Neovim for Beginners"
# بازی vim adventures رو امتحان کن
https://vim-adventures.com/
# یا بازی ترمینالی:
sudo apt install pacvim # روی لینوکسیادت باشه، تسلط روی ویرایشگر ترمینال مثل یادگیری تایپ سریعه - اول سخته، اما بعدش دیگه نمیتونی برگردی به روش قدیمی!
شروع کن با nano برای کارهای ساده، بعد برو vimtutor رو انجام بده. یه ماه دیگه خودت میبینی چقدر سریعتر میتونی کد بزنی!
این مقاله با کمک هوش مصنوعی نوشته شده؛ چون رفرنس فارسی جامع و درستحسابی پیدا نکردم، تصمیم گرفتم یه منبع جمعوجور هم برای خودم، هم برای شما آماده کنم.
دیدگاه و یا پرسش خود را برای ما ارسال کنید.
هنوز دیدگاه یا پرسشی ایجاد نشده است :/
تجربهها، دیدگاهها و نکات الهامبخشی که با شما به اشتراک میگذاریم.