Vi/Vim Editörü Ubuntu’da Nasıl Kullanılır: Eksiksiz Teknik Referans Kılavuzu
Vi ve Vim (Vi Improved), tamamen terminal içinde çalışan, modal, klavye odaklı metin editörleridir; bu da onları Ubuntu ve diğer Linux dağıtımlarında sunucu yönetimi, uzak yapılandırma düzenleme ve betik iş akışları için vazgeçilmez kılar. Vim, Vi’nin üzerine sözdizimi vurgulama, çok seviyeli geri alma, bölünmüş pencereler, eklenti desteği ve betiklenebilir bir yapılandırma katmanı ekler — tüm bunları ihmal edilebilir sistem kaynakları tüketerek yapar.
Bir VPS Hosting ortamı veya bare-metal sunucu yönetiyorsanız, Vim’e hakimiyet isteğe bağlı değildir — bu temel bir beceridir. SSH oturumlarında her zaman GUI erişimi olmaz ve Vim, dokunacağınız neredeyse her Unix tabanlı sistemde evrensel olarak mevcuttur.
Vim Neden Sunucu Ortamlarına Hâkim Olmaya Devam Ediyor
Modern IDE’ler güçlüdür, ancak gece saat 2’de bozuk bir Nginx yapılandırmasını hatasını ayıklamak için SSH üzerinden başsız bir Ubuntu sunucusuna bağlandığınızda bunların hiçbir önemi yoktur. Vim’in modal tasarımı, her tuş vuruşunun bir komut olduğu anlamına gelir — fare bağımlılığı yoktur, render yükü yoktur ve grafik katmanının getirdiği gecikme yoktur.
Sistem yöneticilerinin Vim’e güvenmesinin temel nedenleri:
- Sıfır harici bağımlılık: Düşük bant genişliği veya yüksek gecikmeli bağlantılar dahil her SSH bağlantısı üzerinden çalışır
- Tutarlı erişilebilirlik: Debian, Ubuntu, CentOS, Alpine ve neredeyse her Linux dağıtımında önceden yüklenmiş veya kolayca kurulabilir
- Ölçekte hız: Kas hafızası oluşturulduktan sonra binlerce satırlık yapılandırma dosyalarını, log dosyalarını veya betikleri düzenlemek Vim’de herhangi bir GUI editöründen daha hızlıdır
- Betiklenebilirlik: Vim’in yerleşik betik dili (Vimscript) ve Lua desteği (Neovim’de), tekrarlayan düzenleme görevlerinin tam otomasyonuna olanak tanır
Ubuntu’ya Vim Kurulumu
Ubuntu, sözdizimi vurgulama, çok dosya desteği ve birçok gelişmiş özellikten yoksun minimal bir `vim-tiny` paketiyle birlikte gelir. Tam işlevsellik için eksiksiz paketi kurun:
“`bash
sudo apt update
sudo apt install vim -y
“`
Kurulu sürümü doğrulamak ve tam özellik desteğini onaylamak için:
“`bash
vim –version
“`
Özellik bayraklarında `+syntax`, `+clipboard`, `+python3` ve `+multi_byte` ifadelerini arayın. `-` öneki, o özelliğin ikili dosyadan derleme dışı bırakıldığı anlamına gelir. Bu özelliklere ihtiyaç duyuyorsanız ve bunlar yoksa, bunun yerine `vim-gtk3` veya `vim-nox` kurun:
“`bash
sudo apt install vim-nox -y # Headless full-feature build
sudo apt install vim-gtk3 -y # GTK3 build with clipboard integration
“`
Kritik uç durum: Docker konteynerlerinde veya cloud-init ile önyüklenmiş Dedicated Servers‘da kullanılanlar gibi minimal Ubuntu sunucu görüntülerinde — `vi` bile mevcut olmayabilir. Bu durumda, herhangi bir yapılandırma dosyası düzenlemeye çalışmadan önce `vim`’ı açıkça kurun.
Dosya Açma, Oluşturma ve Kurtarma
“`bash
vim filename.txt # Open existing file or create new one
vim /etc/nginx/nginx.conf # Open a system configuration file (use sudo if needed)
sudo vim /etc/ssh/sshd_config # Edit privileged files
vim +42 filename.txt # Open file and jump directly to line 42
vim +/searchterm file.txt # Open file with cursor on first match of searchterm
“`
Takas dosyası kurtarma: Vim, düzenleme sırasında otomatik olarak gizli bir takas dosyası (`.filename.txt.swp`) oluşturur. Oturumunuz çökerse veya SSH bağlantısı kesilirse, aynı dosyayı yeniden açın; Vim sizi kaydedilmemiş değişiklikleri kurtarmanız için yönlendirecektir. Her zaman önce `(R)ecover`’ı seçin, kurtarılan içeriği kaydedin, ardından takas dosyasını `:e` ve ardından `:!rm ~/.filename.txt.swp` ile veya `vim -r filename.txt` çalıştırarak silin.
Bu kurtarma mekanizması, üretim sunucularındaki kritik yapılandırma dosyalarını düzenlerken özellikle değerlidir — kesilen bir bağlantı, kaybedilen iş anlamına gelmez.
Vim’in Modal Mimarisini Anlamak
Vim’in modal tasarımı, içselleştirilmesi gereken tek en önemli kavramdır. Her tuş vuruşunun bir karakter eklediği standart editörlerin aksine, Vim gezinmeyi, düzenlemeyi ve komut yürütmeyi ayrı modlara ayırır.
| Mod | Etkinleştirme | Birincil Amaç |
|---|
| — | — | — |
|---|
| **Normal** | `Esc` (açılışta varsayılan) | Gezinme, silme, kopyalama, yapıştırma, makro yürütme |
|---|
| **Insert** | `i`, `a`, `o`, `O`, `I`, `A` | Metin yazma ve ekleme |
|---|
| **Visual** | `v` (karakter), `V` (satır), `Ctrl+v` (blok) | Metin aralıklarını seçme |
|---|
| **Visual Block** | `Ctrl+v` | Sütun tabanlı seçim ve düzenleme |
|---|
| **Command-Line** | `:` | Dosya işlemleri, arama/değiştirme, ayarlar, harici komutlar |
|---|
| **Replace** | `R` | Mevcut karakterlerin üzerine yazma |
|---|
| **Ex** | `Q` | Toplu komut yürütme (etkileşimli olarak nadiren kullanılır) |
|---|
En yaygın başlangıç hatası, Normal modda metin görünmesini bekleyerek tuşlara basmak, ardından `dd`’ın bir satırı sildiğini veya `gg`’ın dosyanın başına atladığını görünce paniğe kapılmaktır. Ekranın sol alt köşesini kontrol ederek her zaman mevcut modunuzu doğrulayın — Insert modu `– INSERT –` gösterir, Visual modu `– VISUAL –` gösterir ve Normal mod hiçbir şey göstermez.
Normal Modda Gezinme Komutları
Verimli gezinme, yalnızca işlevsel olan bir Vim kullanıcısını gerçekten hızlı olandan ayıran şeydir. Bunları öncelik sırasına göre öğrenin:
Temel İmleç Hareketi
| Tuş | Eylem |
|---|
| — | — |
|---|
| `h` | Bir karakter sola git |
|---|
| `l` | Bir karakter sağa git |
|---|
| `j` | Bir satır aşağı git |
|---|
| `k` | Bir satır yukarı git |
|---|
| `w` | Sonraki kelimenin başına atla |
|---|
| `b` | Önceki kelimenin başına atla |
|---|
| `e` | Mevcut kelimenin sonuna atla |
|---|
| `0` | Satırın başına atla |
|---|
| `^` | Satırın ilk boşluk olmayan karakterine atla |
|---|
| `$` | Satırın sonuna atla |
|---|
Dosya Düzeyinde Gezinme
| Tuş | Eylem |
|---|
| — | — |
|---|
| `gg` | Dosyanın ilk satırına atla |
|---|
| `G` | Dosyanın son satırına atla |
|---|
| `:42` | 42. satıra atla |
|---|
| `Ctrl+f` | Bir tam sayfa ileri kaydır |
|---|
| `Ctrl+b` | Bir tam sayfa geri kaydır |
|---|
| `Ctrl+d` | Yarım sayfa aşağı kaydır |
|---|
| `Ctrl+u` | Yarım sayfa yukarı kaydır |
|---|
| `%` | Eşleşen parantez, köşeli parantez veya süslü paranteze atla |
|---|
| `*` | İmleç altındaki kelimenin sonraki geçtiği yere atla |
|---|
| `#` | İmleç altındaki kelimenin önceki geçtiği yere atla |
|---|
İleri düzey kullanıcı ipucu: Herhangi bir hareket komutunun önüne tekrarlamak için bir sayı ekleyin. `5j` 5 satır aşağı gider. `3w` 3 kelime ileri atlar. `10dd` 10 satırı siler. Bu sayısal çarpan, neredeyse her Normal mod komutuna uygulanır ve hızlı düzenlemenin anahtarıdır.
Insert Moduna Girme ve Çıkma
| Tuş | Davranış |
|---|
| — | — |
|---|
| `i` | İmleçten önce ekle |
|---|
| `a` | İmleçten sonra ekle |
|---|
| `I` | Satırın başına ekle |
|---|
| `A` | Satırın sonuna ekle |
|---|
| `o` | Aşağıya yeni satır aç ve Insert moduna gir |
|---|
| `O` | Yukarıya yeni satır aç ve Insert moduna gir |
|---|
| `s` | İmleç altındaki karakteri sil ve Insert moduna gir |
|---|
| `S` | Tüm satırı sil ve Insert moduna gir |
|---|
| `Esc` veya `Ctrl+[` | Normal moda dön |
|---|
Kritik alışkanlık: Bir metin eklemesini bitirdikten hemen sonra `Esc`’a basma refleksini geliştirin. Gezinmeye niyetlenirken Insert modunda kalmak, kazara yapılan düzenlemelerin kaynağıdır.
Kaydetme, Çıkma ve Dosya Yönetimi
Bu komutlar Command-Line modundan yürütülür (önce `:`’a basın):
| Komut | Eylem |
|---|
| — | — |
|---|
| `:w` | Mevcut dosyayı kaydet (yaz) |
|---|
| `:w filename.txt` | Yeni bir dosya adıyla kaydet |
|---|
| `:q` | Çık (yalnızca kaydedilmemiş değişiklik yoksa) |
|---|
| `:q!` | Tüm kaydedilmemiş değişiklikleri atarak zorla çık |
|---|
| `:wq` veya `:x` | Kaydet ve çık |
|---|
| `ZZ` | Kaydet ve çık (Normal mod kısayolu) |
|---|
| `ZQ` | Kaydetmeden çık (Normal mod kısayolu) |
|---|
| `:w !sudo tee %` | sudo ayrıcalıkları olmadan açtığınız bir dosyayı kaydet |
|---|
`:w !sudo tee %` hilesi, sunucu yöneticileri için temel bilgidir. `/etc/fstab` gibi bir sistem dosyasını sudo olmadan açıp değişiklik yaptığınızda, `:w` ile kaydedemezsiniz. Bu komut, tampon içeriğini yükseltilmiş ayrıcalıklarla dosyayı yazmak için `sudo tee` üzerinden aktarır — Vim’i kapatıp yeniden açmaya gerek kalmadan.
Düzenleme İşlemleri: Silme, Kopyalama, Yapıştırma ve Geri Alma
Vim’in düzenleme modeli operatörler + hareketler üzerine kuruludur. Bir operatör (silmek için `d` veya yank/kopyalamak için `y` gibi), bir hareketle (kelime için `w` veya satır sonu için `$` gibi) birleştirildiğinde hassas bir düzenleme eylemi oluşturur.
Temel Düzenleme Komutları
| Komut | Eylem |
|---|
| — | — |
|---|
| `x` | İmleç altındaki karakteri sil |
|---|
| `X` | İmleçten önceki karakteri sil |
|---|
| `dd` | Mevcut satırın tamamını sil (kes) |
|---|
| `D` | İmleçten satır sonuna kadar sil |
|---|
| `dw` | İmleçten kelimenin sonuna kadar sil |
|---|
| `d$` | İmleçten satır sonuna kadar sil |
|---|
| `d0` | İmleçten satır başına kadar sil |
|---|
| `yy` veya `Y` | Mevcut satırın tamamını yank et (kopyala) |
|---|
| `yw` | İmleçten kelimenin sonuna kadar yank et |
|---|
| `p` | İmleçten sonra yapıştır (veya satır bazlı yank’lar için mevcut satırın altına) |
|---|
| `P` | İmleçten önce yapıştır (veya mevcut satırın üstüne) |
|---|
| `u` | Son değişikliği geri al |
|---|
| `Ctrl+r` | Son geri alınan değişikliği yeniden uygula |
|---|
| `.` | Son değişikliği tekrarla (Vim’deki en güçlü komutlardan biri) |
|---|
| `~` | İmleç altındaki karakterin büyük/küçük harf durumunu değiştir |
|---|
| `>>` | Mevcut satırı bir seviye girintile |
|---|
| `<<` | Mevcut satırın girintisini bir seviye azalt |
|---|
`.` (nokta) komutu, başlangıç seviyesindeki kullanıcılar arasında tartışmasız en az kullanılan Vim özelliğidir. Son bileşik eyleminizi tekrarlar — `dw` ile bir kelimeyi sildiyseniz, `.`’a basmak bir sonraki kelimeyi siler. `cw` ile bir kelimeyi değiştirip bir yedek yazdıysanız, `.` aynı değişikliği bir sonraki geçtiği yere uygular. Bu, büyük dosyalarda tekrarlayan manuel düzenlemeleri ortadan kaldırır.
Visual Mod: Hassas Metin Seçimi
Visual mod üç seçim ayrıntı düzeyi sağlar:
- `v` — Karakter bazlı visual seçim
- `V` — Satır bazlı visual seçim (tüm satırları seçer)
- `Ctrl+v` — Blok visual seçim (sütun düzenleme)
Bir seçim yaptıktan sonra operatörleri uygulayın:
| Tuş | Seçim Üzerindeki Eylem |
|---|
| — | — |
|---|
| `d` | Seçili metni sil |
|---|
| `y` | Seçili metni yank et (kopyala) |
|---|
| `c` | Değiştir (sil ve Insert moduna gir) |
|---|
| `>` | Seçimi girintile |
|---|
| `<` | Seçimin girintisini azalt |
|---|
| `~` | Seçimin büyük/küçük harf durumunu değiştir |
|---|
| `:` | Aralık önceden doldurulmuş olarak Command-Line moduna gir |
|---|
Blok visual mod (`Ctrl+v`) gerçek dünya kullanım senaryosu: `#` ekleyerek 15 ardışık satırı yorum satırına dönüştürmeniz gereken bir yapılandırma dosyanız var. `Ctrl+v` ile bu satırların ilk sütununu seçin, `j` ile aşağı gidin, `I`’a (büyük i) basın, `#` yazın, ardından `Esc`’a basın. Vim eklemeyi seçilen tüm satırlara aynı anda uygular. Bu, diğer editörlerin çoğunda regex veya manuel tekrar gerektiren bir görevdir.
Arama ve Değiştirme
Arama
“`
/pattern Search forward for pattern (regex supported)
?pattern Search backward for pattern
n Jump to next match
N Jump to previous match
- Search forward for word under cursor
Search backward for word under cursor
:noh Clear search highlighting
“`
Arama ve Değiştirme Sözdizimi
“`
:%s/old/new/g Replace all occurrences in entire file
:%s/old/new/gc Replace all with confirmation prompt for each
:%s/old/new/gi Case-insensitive replace across entire file
:10,20s/old/new/g Replace only within lines 10 through 20
:'<,'>s/old/new/g Replace within visually selected range
:%s/bwordb/new/g Replace whole word only (word boundary anchors)
“`
Regex desteği: Vim kendi regex lehçesini kullanır. `b` kelime sınırı, rakamlar için `d`, boşluk için `s` ve `+` (bir veya daha fazla) mevcuttur. Genişletilmiş regex sözdizimi için `v` ile önek ekleyin: `:%s/v(foo|bar)/baz/g` “foo” veya “bar” ile eşleşir ve “baz” ile değiştirir.
Birden Fazla Dosya, Tampon ve Bölünmüş Pencerelerle Çalışma
Vim’in gücü, karmaşık düzenleme oturumlarında en belirgin şekilde burada ortaya çıkar.
Tamponlar
Tampon, bir dosyanın bellekteki temsilidir. Vim aynı anda birçok tamponu açık tutabilir.
“`
:e filename Open a file into a new buffer
:ls or :buffers List all open buffers
:b2 Switch to buffer number 2
:bnext or :bn Switch to next buffer
:bprev or :bp Switch to previous buffer
:bd Delete (close) current buffer
“`
Bölünmüş Pencereler
“`
:split filename Horizontal split, open file in upper pane
:vsplit filename Vertical split, open file in right pane
Ctrl+w h/j/k/l Navigate between split panes
Ctrl+w = Equalize split pane sizes
Ctrl+w q Close current pane
“`
Sekmeler
“`
:tabnew filename Open file in a new tab
:tabnext or gt Switch to next tab
:tabprev or gT Switch to previous tab
:tabclose Close current tab
“`
Pratik senaryo: Bir VPS with cPanel üzerindeki bir web sunucusunun yapılandırmasını düzenlerken, sanal host dosyasını düzenlerken ana `nginx.conf`’a çapraz referans vermeniz gerekebilir. Her ikisini de `:vsplit /etc/nginx/nginx.conf` ile dikey bölünmüş olarak açın ve bölmeler arasında `Ctrl+w l` ve `Ctrl+w h` ile gezinin — diğerine başvurmak için bir dosyayı kapatmaya gerek yoktur.
Vim’i .vimrc ile Yapılandırma
Ana dizininizdeki `.vimrc` dosyası, Vim’in kalıcı yapılandırmasıdır. Vim her başladığında Vimscript olarak yürütülür.
“`bash
vim ~/.vimrc
“`
Önerilen Üretim Sunucusu Yapılandırması
“`vim
" Display settings
set number " Show absolute line numbers
set relativenumber " Show relative line numbers (great for jump commands)
set cursorline " Highlight the current line
set scrolloff=8 " Keep 8 lines visible above/below cursor when scrolling
" Indentation
set autoindent " Copy indent from current line on new line
set smartindent " Context-aware indentation for code
set expandtab " Convert tabs to spaces
set tabstop=4 " Tab width = 4 spaces
set shiftwidth=4 " Indentation width for >> and <<
" Search behavior
set hlsearch " Highlight all search matches
set incsearch " Show matches as you type
set ignorecase " Case-insensitive search
set smartcase " Override ignorecase if search contains uppercase
" Usability
set mouse=a " Enable mouse in all modes
syntax on " Enable syntax highlighting
set encoding=utf-8 " Default encoding
set clipboard=unnamedplus " Use system clipboard for yank/paste
set undofile " Persist undo history across sessions
set undodir=~/.vim/undo " Directory for persistent undo files
" Visual
set showmatch " Briefly jump to matching bracket
set laststatus=2 " Always show status line
set wildmenu " Enhanced command-line completion
“`
Önemli: `set undofile` yönergesi, diske kaydedilen kalıcı geri alma geçmişi oluşturur. Bu, bir dosyayı kapatıp günler sonra yeniden açabileceğiniz ve önceki oturumdan yapılan değişiklikleri hâlâ geri alabileceğiniz anlamına gelir. Bunu etkinleştirmeden önce geri alma dizinini oluşturun:
“`bash
mkdir -p ~/.vim/undo
“`
Bu, üretim sistemlerindeki yapılandırma dosyalarında aşamalı değişiklikler yaparken özellikle değerlidir — örneğin, birden fazla alan adı için SSL Certificates çalıştıran bir sunucuda PHP-FPM ayarlarını ince ayarlarken veya SSL parametrelerini düzenlerken.
Makrolar: Tekrarlayan Düzenlemeleri Otomatikleştirme
Makrolar, Vim’in en güçlü ve en az kullanılan özelliklerinden biridir. Bir makro, bir tuş vuruşu dizisini kaydeder ve bunları yeniden oynatır.
“`
qa Start recording macro into register 'a'
[actions] Perform any sequence of Normal/Insert mode commands
q Stop recording
@a Replay macro stored in register 'a'
@@ Replay the last executed macro
10@a Replay macro 'a' ten times
“`
Gerçek dünya örneği: 200 satırlı bir CSV dosyanız var ve her satırın ikinci alanını çift tırnak içine almanız gerekiyor. Makroyu ilk satırda kaydedin, `199@a` ile 199 kez tekrarlayın; dönüşüm bir saniyeden kısa sürede tamamlanır. Betik yazımına gerek yoktur.
İşaretler ve Atlamalar
İşaretler, bir dosya içindeki konumları yer imlerine eklemenize ve anında geri dönmenize olanak tanır.
“`
ma Set mark 'a' at current cursor position
'a Jump to the line of mark 'a'
`a Jump to the exact position of mark 'a'
'' Jump back to position before last jump
Ctrl+o Jump to previous position in jump list
Ctrl+i Jump to next position in jump list
:marks List all current marks
“`
Vim vs. Nano vs. Emacs: Doğru Terminal Editörünü Seçmek
| Özellik | Vim | Nano | Emacs |
|---|
| — | — | — | — |
|---|
| **Öğrenme eğrisi** | Dik (modal sistem) | Minimal | Çok dik |
|---|
| **Başlangıç süresi** | Neredeyse anında | Neredeyse anında | Daha yavaş |
|---|
| **Bellek kullanımı** | Çok düşük | Çok düşük | Orta ile yüksek arası |
|---|
| **Sözdizimi vurgulama** | Tam | Temel | Tam |
|---|
| **Eklenti ekosistemi** | Kapsamlı | Minimal | Kapsamlı |
|---|
| **Makro desteği** | Yerel, güçlü | Yok | Yerel |
|---|
| **Bölünmüş pencereler** | Evet | Hayır | Evet |
|---|
| **Uzaktan düzenleme** | SSH üzerinden yerel olarak | SSH üzerinden yerel olarak | TRAMP protokolü |
|---|
| **Yapılandırma karmaşıklığı** | Orta (.vimrc) | Minimal | Yüksek (Elisp) |
|---|
| **En iyi kullanım** | İleri düzey kullanıcılar, sistem yöneticileri | Hızlı düzenlemeler, yeni başlayanlar | Geliştiriciler, Lisp kullanıcıları |
|---|
Sunucu yönetimi görevleri için — yapılandırma dosyalarını düzenleme, kabuk betikleri yazma, logları inceleme — Vim güç, erişilebilirlik ve hız açısından en iyi dengeyi sağlar. Nano, bilişsel yükü karşılayamadığınız tek seferlik düzenlemeler için kabul edilebilirdir. Emacs, terminalde yaşayan geliştiriciler için meşru bir seçimdir; ancak kaynak tüketimi ve başlangıç süresi, onu kısıtlı sunucu ortamlarında daha az pratik kılar.
Yaygın Tuzaklar ve Bunlardan Nasıl Kaçınılır
1. Üretim dosyalarını yedek almadan düzenlemek
Kritik sistem dosyalarını düzenlemeden önce her zaman yedek oluşturun:
“`bash
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo vim /etc/nginx/nginx.conf
“`
2. sudo kullanmayı unutmak
Ayrıcalıklı bir dosyayı sudo olmadan açıp değişiklik yaptıysanız, düzenlemelerinizi kaybetmeden kaydetmek için `:w !sudo tee %` kullanın.
3. Yazmaçları karıştırmak
`dd` ile metin sildiğinizde, bu varsayılan yazmaç `"`’e gider. Ardından `yy` ile bir şey yank ederseniz, silinen metin üzerine yazılır. Silmeden önce bir yank’ı korumak için adlandırılmış yazmaçları kullanın: `"ayy` `a` yazmaçına yank eder ve `"ap` ondan yapıştırır.
4. Paylaşılan sistemlerde takas dosyaları bırakmak
`/tmp` veya çalışma dizinindeki Vim takas dosyaları, diğer kullanıcıları veya otomatik süreçleri karıştırabilir. `.vimrc`’de özel bir takas dizini yapılandırın:
“`vim
set directory=~/.vim/swap//
“`
Çift sondaki eğik çizgi, Vim’in takas dosyası adına tam dosya yolunu kodlamasına neden olarak çakışmaları önler.
5. Platformlar arası dosyalarda satır sonu sorunları
Windows’ta oluşturulmuş bir dosyayı düzenlerseniz, CRLF (`rn`) satır sonları olabilir. Vim her satırın sonunda `^M` gösterecektir. Bunu şununla düzeltin:
“`bash
:%s/r//g
“`
Pratik Temel Çıkarımlar Kontrol Listesi
Bunu Vim oturumlarından önce ve sırasında hızlı referans karar matrisi olarak kullanın:
- Herhangi bir üretim dosyasını düzenlemeden önce: `cp file file.$(date +%Y%m%d%H%M%S).bak` ile zaman damgalı yedek oluşturun
- Mod farkındalığı: Tuş vuruşları metin eklemiyorsa, `Esc`’a basın ve modunuzu doğrulayın
- Hızlı kaydetme alışkanlığı: Her önemli değişiklikten sonra `Esc` ardından `:w`’a basın — sona kadar beklemeyin
- `:set number` kullanın belirli bir satıra gitmeniz gerekiyorsa ve bunu `.vimrc`’de ayarlamadıysanız geçici olarak
- Global arama/değiştirme için: `:%s/old/new/g`’ü körü körüne çalıştırmadan önce her zaman `:%s/old/new/gc` ile test edin (onaylı)
- Açılışta takas dosyası istemi: Her zaman `(R)ecover`’ı seçin, içeriği kaydedin, ardından takas dosyasını silin
- Sütun düzenlemeleri için: Manuel tekrar yerine `Ctrl+v` blok visual modunu kullanın
- Kalıcı geri alma: Düzenli olarak yönettiğiniz herhangi bir sunucuda `.vimrc`’de `set undofile`’ı yapılandırın
- Pano entegrasyonu: `p` beklenmedik içerik yapıştırıyorsa, `set clipboard=unnamedplus`’ın ayarlandığını ve `xclip` veya `xsel`’ın kurulu olduğunu kontrol edin
- Şüphe duyduğunuzda: `:help keyword` herhangi bir komut veya seçenek için yerleşik belgeleri açar
İster Shared Web Hosting ortamlarında yapılandırma dosyalarını yönetiyor olun, ister Dedicated Servers üzerinde karmaşık altyapıyı sürdürüyor olun, Vim’in verimliliği zamanla katlanarak artar — içselleştirdiğiniz her komut, iş akışınızdaki sürtünmeyi kalıcı olarak ortadan kaldırır.
SSS
S: Ubuntu’da Vi ile Vim arasındaki fark nedir?
Modern Ubuntu sistemlerinde `vi`, genellikle azaltılmış uyumluluk modunda `vim`’e veya `vim-tiny`’e sembolik bir bağlantıdır. Gerçek Vi, sözdizimi vurgulama, çok seviyeli geri alma ve eklenti desteği olmayan 1976’nın orijinal editörüdür. Vim, Vi tuş bağlamalarıyla tam geriye dönük uyumluluğu korurken Vi’nin üzerine 100’den fazla özellik ekler.
S: Tamamen sıkışırsam Vim’den nasıl çıkarım?
Normal modda olduğunuzdan emin olmak için `Esc`’e birkaç kez basın, ardından `:q!` yazıp Enter’a basın. Bu, kaydetmeden zorla çıkar. Bu bile başarısız olursa (nadir, ancak özyinelemeli komut durumlarında mümkün), önce `Ctrl+c`’e ardından `:q!`’e basın.
S: Vim, dosyaları yerel olarak kopyalamadan SSH üzerinden düzenleyebilir mi?
Evet. Uzak dosyaları doğrudan SCP üzerinden düzenlemek için `vim scp://user@hostname//path/to/file` kullanın. Vim aktarımı şeffaf bir şekilde yönetir. Alternatif olarak, dosyayı çekmek, yerel olarak düzenlemek ve geri göndermek için `rsync` kullanın — bu, büyük dosyalar için daha hızlıdır.
S: Vim’in tanımadığı belirli bir dosya türü için sözdizimi vurgulamayı nasıl etkinleştiririm?
Mevcut oturum için bir dosya türünü manuel olarak atamak üzere `:set filetype=nginx` (veya `python`, `yaml`, `bash` vb.) çalıştırın. Belirli bir dosya uzantısı için kalıcı hale getirmek için `.vimrc`’nize `autocmd BufRead,BufNewFile *.conf set filetype=nginx` ekleyin.
S: Neovim, sunucu kullanımı için Vim’den daha iyi bir seçim midir?
Saf sunucu yönetimi görevleri için standart Vim yeterlidir ve daha evrensel olarak mevcuttur. Neovim, Lua tabanlı yapılandırma, daha iyi asenkron eklenti desteği ve yerleşik bir LSP istemcisi sunar — bunlar öncelikle geliştirme iş akışları için önemli avantajlardır. Yalnızca gerekli olanı kurduğunuz üretim sunucularında Vim, pragmatik seçim olmaya devam eder.
