یکشنبه, 30 آذر 1404

راهنمای کامل ویرایشگرهای ترمینالی

...

” اگر با لینوکس یا سرور کار می‌کنی، دیر یا زود مجبور می‌شی داخل ترمینال فایل ویرایش کنی. توی این مقاله به‌صورت ساده و کاربردی با ویرایشگرهای nano، vim و neovim آشنا می‌شی.. “

تو دنیای لینوکس و سرور، یه روزی می‌رسه که دیگه نمی‌تونی از VS Code یا ویرایشگرهای معمولی استفاده کنی. یا باید یه فایل config رو روی سرور عوض کنی، یا یه اسکریپت رو سریع ادیت کنی. اینجاست که باید دست به دامن ویرایشگرهای ترمینال بشی!

چرا باید ویرایشگر ترمینال یاد بگیریم؟

قبل از هر چیزی، بذار بگم چرا این موضوع انقدر مهمه:

مواقعی که به دردت می‌خوره:

  • وقتی روی سرور کار می‌کنی (مثل VPS یا سرور اختصاصی)

  • وقتی SSH کردی به دستگاه دیگه‌ای

  • وقتی GUI (محیط گرافیکی) نداریم (مثل سرورهای Headless)

  • وقتی می‌خوای سریع یه فایل رو ویرایش کنی (بدون باز کردن ویرایشگر سنگین)

سه ویرایشگر اصلی:

  1. nano - ساده‌ترین، برای شروع عالیه

  2. vim - قدرتمندترین، کمی یادگیری می‌خواد

  3. neovim - نسخه مدرن vim با امکانات بیشتر

بیاین از آسون‌ترین شروع کنیم...

۱. Nano: ویرایشگر ساده برای همه

اگر تازه‌کار هستی یا می‌خوای سریع یه فایل رو ادیت کنی، nano بهترین انتخابه.

چطور 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 (راهنما)

کارهای اصلی با nano:

۱. حرکت کردن

  • فلش‌ها: بالا، پایین، چپ، راست

  • 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:

۱. سینتکس‌هایلایت کردن:

nano -Y sh script.sh  # برای اسکریپت bash
nano -Y python app.py # برای پایتون
nano -Y xml data.xml  # برای XML

۲. باز کردن در خط خاص:

# باز کردن فایل در خط ۱۵
nano +15 filename.txt

# باز کردن و رفتن به آخر فایل
nano + filename.txt

۳. حالت backup خودکار:

nano -B filename.txt  # قبل از ذخیره، backup می‌گیره

مزایای nano:

  • ✅ یادگیری آسون

  • ✅ دستورات پایین صفحه نشون داده می‌شن

  • ✅ برای کارهای سریع عالیه

معایب nano:

  • ❌ امکانات محدود

  • ❌ برای ویرایش فایل‌های بزرگ مناسب نیست

  • ❌ کلیدهای ترکیبی کم

۲. Vim: ویرایشگر حرفه‌ای

اگر با برنامه‌نویسی یا ادمین‌شدن جدی هستی، vim رو باید یاد بگیری. vim مثل یه زبان برنامه‌نویسی برای ویرایش متنه!

فلسفه vim:

vim سه حالت (mode) اصلی داره:

  1. حالت نرمال (Normal mode): برای حرکت و دستورات

  2. حالت درج (Insert mode): برای تایپ کردن

  3. حالت بصری (Visual mode): برای انتخاب متن

وقتی vim رو باز می‌کنی، به طور پیش‌فرض در حالت نرمال هستی.

چطور vim رو باز کنیم؟

vim filename.txt          # باز کردن فایل
vim file1.txt file2.txt   # باز کردن چند فایل
vim +10 filename.txt      # باز کردن در خط ۱۰
vim +/search filename.txt # باز کردن در محل کلمه جستجو شده

حالت‌های vim:

حالت نرمال (حالت پیش‌فرض)

اینجا نمی‌تونی تایپ کنی! فقط می‌تونی حرکت کنی یا دستور بدی.

حالت درج

برای تایپ کردن. با فشار دادن i وارد این حالت می‌شی.

حالت بصری

برای انتخاب متن. با فشار دادن v وارد این حالت می‌شی.

حرکت در vim (حالت نرمال):

حرکت پایه:

  • h ← (چپ)

  • j ↓ (پایین)

  • k ↑ (بالا)

  • l → (راست)

بهتره به جای فلش‌ها، از این کلیدها استفاده کنی تا دستت از home row دور نشه.

حرکت پیشرفته:

  • w - برو اول کلمه بعدی

  • b - برو اول کلمه قبلی

  • e - برو آخر کلمه فعلی

  • 0 (صفر) - برو اول خط

  • $ - برو آخر خط

  • gg - برو اول فایل

  • G - برو آخر فایل

  • 50G - برو خط ۵۰

  • Ctrl + f - صفحه بعد

  • Ctrl + b - صفحه قبل

ویرایش در vim:

وارد شدن به حالت درج:

  • i - درج در مکان فعلی

  • I - درج در اول خط

  • a - درج بعد از کاراکتر فعلی

  • A - درج در آخر خط

  • o - باز کردن خط جدید پایین

  • O - باز کردن خط جدید بالا

حذف کردن:

  • x - حذف کاراکتر زیر cursor

  • dw - حذف از مکان فعلی تا اول کلمه بعدی

  • d$ یا D - حذف از مکان فعلی تا آخر خط

  • dd - حذف کل خط

  • 3dd - حذف ۳ خط از مکان فعلی

کپی و پیست:

  • yy - کپی خط (yank)

  • yw - کپی کلمه

  • y$ - کپی تا آخر خط

  • p - پیست بعد از مکان فعلی

  • P - پیست قبل از مکان فعلی

undo/redo:

  • u - undo

  • Ctrl + r - redo

جستجو در vim:

جستجوی ساده:

  • /کلمه - جستجو به جلو

  • ?کلمه - جستجو به عقب

  • n - رفتن به مورد جستجوی بعدی

  • N - رفتن به مورد جستجوی قبلی

جستجوی کاراکتر در خط:

  • fکاراکتر - پیدا کردن کاراکتر در خط به جلو

  • Fکاراکتر - پیدا کردن کاراکتر در خط به عقب

  • ; - تکرار آخرین جستجوی f یا F

  • , - تکرار آخرین جستجوی f یا F در جهت مخالف

ذخیره و خروج:

دستورات (با : شروع می‌شن):

  • :w - ذخیره (write)

  • :q - بستن (quit)

  • :wq یا :x یا ZZ - ذخیره و بستن

  • :q! - بستن بدون ذخیره (force quit)

  • :w filename - ذخیره با اسم جدید

  • :e filename - باز کردن فایل جدید

مثال عملی با vim:

بیاین با هم یه اسکریپت bash بنویسیم:

# فایل رو ایجاد می‌کنیم
vim backup-script.sh

حالا داخل vim:

  1. اول i می‌زنیم تا وارد حالت درج بشیم

  2. این کد رو تایپ می‌کنیم:

#!/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
fi
  1. Esc می‌زنیم تا به حالت نرمال برگردیم

  2. :wq تایپ می‌کنیم و Enter می‌زنیم

ترفندهای vim:

۱. تکرار دستورات:

  • . - تکرار آخرین دستور ویرایش

  • 10dd - حذف ۱۰ خط

  • 5p - ۵ بار پیست کن

۲. جایگزینی (Replace):

  • :%s/قدیم/جدید/g - جایگزینی همه در کل فایل

  • :%s/قدیم/جدید/gc - جایگزینی با تأیید

  • :s/قدیم/جدید/ - جایگزینی در خط فعلی

۳. تقسیم صفحه:

  • :sp filename - تقسیم افقی

  • :vsp filename - تقسیم عمودی

  • Ctrl + w سپس hjkl - حرکت بین پنجره‌ها

  • Ctrl + w سپس + - افزایش ارتفاع

  • Ctrl + w سپس - - کاهش ارتفاع

۴. کار با چند فایل:

  • :n - فایل بعدی

  • :N یا :prev - فایل قبلی

  • :args - نمایش همه فایل‌ها

  • :bn - buffer بعدی

  • :bp - buffer قبلی

vimrc - تنظیمات شخصی

می‌تونی 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>

vimtutor - بهترین راه برای یادگیری

vim یه آموزش تعاملی داره که می‌تونی توی ترمینال اجراش کنی:

vimtutor          # انگلیسی
vimtutor fa       # فارسی (اگه باشه)

حدود ۳۰ دقیقه وقت بذار و vimtutor رو کامل انجام بده. معجزه می‌کنه!

مزایای vim:

  • ✅ فوق‌العاده سریع

  • ✅ روی هر سیستمی هست

  • ✅ پلاگین‌های بی‌نهایت

  • ✅ برای کارهای تکراری عالیه

معایب vim:

  • ❌ حالت‌های مختلف گیج‌کننده‌ست

  • ❌ برای شروع سخته

۳. Neovim: vim مدرن

Neovim یه fork از vim هست که هدفش بهتر کردن معماری و اضافه کردن امکانات مدرنه.

تفاوت‌های اصلی neovim با vim:

  1. LSP (Language Server Protocol) پشتیبانی داخلی

  2. Lua برای تنظیمات و پلاگین‌ها

  3. آسان‌تر برای توسعه

  4. پرفورمنس بهتر

  5. پشتیبانی از ترمینال داخلی

نصب و شروع با neovim:

# روی Ubuntu/Debian
sudo apt install neovim

# روی Fedora
sudo dnf install neovim

# روی macOS با Homebrew
brew install neovim

# روی Arch
sudo pacman -S neovim

استفاده پایه:

nvim filename.txt        # دقیقاً مثل vim

تمام دستورات vim اینجا هم کار می‌کنن! پس اگه vim بلدی، neovim رو هم بلدی.

ویژگی‌های خاص 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)

۳. تنظیمات با Lua:

-- ~/.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 })

شروع سریع با nvim:

اگه می‌خوای سریع شروع کنی، این پیکربندی پایه رو استفاده کن:

# ایجاد پوشه تنظیمات
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>

مزایای neovim:

  • ✅ همه چیز vim رو داره

  • ✅ معماری مدرن‌تر

  • ✅ جامعه فعال‌تر

  • ✅ پلاگین‌های جدیدتر

  • ✅ LSP داخلی

معایب neovim:

  • ❌ هنوز کامل با vim سازگار نیست

  • ❌ بعضی پلاگین‌های خیلی قدیمی vim ممکنه نیاز به جایگزین داشته باشن

  • ❌ نیاز به تنظیمات جدید داره

کدوم رو انتخاب کنم؟

برای تازه‌کارها:

# اگر:
# - فقط می‌خوای یه فایل config رو ویرایش کنی
# - روی سرور کار می‌کنی
# - وقت یادگیری نداری

✅ nano بهترین انتخابته

برای برنامه‌نویس‌ها:

# اگر:
# - روزانه با ترمینال کار می‌کنی
# - می‌خوای productivity ات بالا بره
# - حاضر یه هفته وقت بذاری برای یادگیری

✅ vim رو یاد بگیر

برای حرفه‌ای‌ها:

# اگر:
# - از vim خسته شدی
# - می‌خوای از LSP استفاده کنی
# - دوست داری با Lua کانفیگ کنی

✅ برو سراغ neovim

راهنمای کوچک برای روز اول:

۱. nano:

  • باز کردن: nano فایل

  • ویرایش: مثل Notepad تایپ کن

  • ذخیره: Ctrl + O

  • خروج: Ctrl + X

۲. vim/neovim (حداقل‌های ضروری):

  • باز کردن: vim فایل

  • برای تایپ: i بزن، بعد تایپ کن

  • برای ذخیره: Esc سپس :w

  • برای خروج: Esc سپس :q

  • برای ذخیره و خروج: Esc سپس :wq

۳. وقتی گیر کردی:

  • در nano: Ctrl + G (راهنما)

  • در vim: :help

  • در neovim: :help

  • برای فرار اضطراری: Esc سپس :q!

تمرین‌های عملی:

برای اینکه واقعاً یاد بگیری، این تمرین‌ها رو انجام بده:

هفته اول (nano):

  1. یه فایل txt با nano بساز و چند خط توش بنویس

  2. یه فایل bash script با nano بساز

  3. یه فایل Python با nano بساز

هفته دوم (vim):

  1. vimtutor رو کامل انجام بده

  2. فایل .vimrc خودت رو بساز

  3. با vim یه پروژه کوچک بنویس

هفته سوم (neovim):

  1. neovim رو نصب کن

  2. فایل init.lua رو تنظیم کن

  3. یه پلاگین نصب کن (مثل nvim-tree)

نکات پایانی:

  1. نترس از vim - همه اولش گیج می‌شن

  2. تمرین روزانه - حتی ۱۰ دقیقه

  3. از cheat sheet استفاده کن - کنار دستت باشه

  4. کم‌کم امکانات رو اضافه کن - یه‌دفعه همه چی رو یاد نگیر

منابع کمکی:

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:

# بازی vim adventures رو امتحان کن
https://vim-adventures.com/

# یا بازی ترمینالی:
sudo apt install pacvim   # روی لینوکس

یادت باشه، تسلط روی ویرایشگر ترمینال مثل یادگیری تایپ سریعه - اول سخته، اما بعدش دیگه نمی‌تونی برگردی به روش قدیمی!

شروع کن با nano برای کارهای ساده، بعد برو vimtutor رو انجام بده. یه ماه دیگه خودت میبینی چقدر سریع‌تر می‌تونی کد بزنی!

این مقاله با کمک هوش مصنوعی نوشته شده؛ چون رفرنس فارسی جامع و درست‌حسابی پیدا نکردم، تصمیم گرفتم یه منبع جمع‌وجور هم برای خودم، هم برای شما آماده کنم.

ارسال دیدگاه

دیدگاه و یا پرسش خود را برای ما ارسال کنید.

وارد شوید

برای ارسال دیدگاه یا پرسش خود ابتدا وارد سایت شوید

ورود یا ثبت نام

دیدگاه کاربران

هنوز دیدگاه یا پرسشی ایجاد نشده است :/

تازه‌ترین نوشته‌ها

دیدن همه

تجربه‌ها، دیدگاه‌ها و نکات الهام‌بخشی که با شما به اشتراک می‌گذاریم.