Jump to content

# Vim (Türkçe)

From ArchWiki

İlgili makaleler

- Neovim
- Vis

Vim bir terminal metin düzenleyicisidir. Sözdizimi vurgulama, kapsamlı bir yardım sistemi, yerel komut dosyası oluşturma (Vim script), metin seçimi için görsel bir mod, dosyaların karşılaştırılması (vimdiff(1)) , rview(1) ve rvim(1) gibi kısıtlı yeteneklere sahip araçlar dahil olmak üzere ek özelliklere sahip vi'nin genişletilmiş bir sürümüdür.

## Kurulum

Aşağıdaki paketlerden birini kurun:

- vim - Python, Lua, Ruby ve Perl yorumlayıcı desteği ile ancak GTK/X desteği olmadan.
- gvim - Bu da GTK/X desteği ile yukarıdaki vim paketinin aynısını sağlar.

Not

- vim paketi Xorg desteği olmadan oluşturulmuştur; özellikle `+clipboard` özelliği eksiktir, bu nedenle Vim birincil ve pano seçim arabellekleri ile çalışamayacaktır. gvim paketi ayrıca `+clipboard` özelliği ile Vimin CLI sürümünü sağlar.
- Resmi olmayan herecura deposu da bir dizi Vim/gVim varyantı sağlar: `vim-cli`, `vim-gvim-common`, `vim-gvim-gtk3`, `vim-rt` ve `vim-tiny`.

## Kullanım

Vim' in nasıl kullanılacağına ilişkin temel bir genel bakış için, vimtutor (terminal sürümü için) veya gvimtutor (grafik sürümü için) çalıştırarak Vim öğreticisini izleyin.

Vim `:h konu` komutu ile erişilebilen geniş bir yardım sistemi içerir. Konular komutları, yapılandırma seçeneklerini, tuş bağlamalarını, eklentileri vb. içerir. Yardım sistemi hakkında bilgi almak ve konular arasında geçiş yapmak için `:h` komutunu (herhangi bir konu olmadan) kullanın.

## Konfigürasyon

Vim' in kullanıcıya özel yapılandırma dosyası ev dizininde bulunur: `~/.vimrc` ve geçerli kullanıcının Vim dosyaları `~/.vim/` içinde bulunur. Global yapılandırma dosyası `/etc/vimrc` adresinde bulunur. `defaults.vim` ve `archlinux.vim` gibi global Vim dosyaları `/usr/share/vim/` içinde bulunur.

9.1.0327 sürümünden itibaren Vim freedesktop XDG Temel Dizin Spesifikasyonu'nu benimser: bu, yapılandırma dosyalarınızı artık `~/.config/vim/` altına yerleştirebileceğiniz anlamına gelir, böylece Vim ev dizininizi kirletmeyi bırakacaktır.

gVim için, kullanıcıya özel yapılandırma dosyası `~/.gvimrc` adresinde ve global yapılandırma dosyası `/etc/gvimrc` adresinde bulunur.

Not

- Sözdizimi vurgulama gibi yaygın olarak beklenen davranışlar `defaults.vim` içinde etkinleştirilir ve `~/.vimrc` olmadığında yüklenir. `defaults.vim` dosyasının yüklenmesini tamamen devre dışı bırakmak için `/etc/vimrc` dosyasına `let skip_defaults_vim=1` ekleyin. [1]. Alternatif olarak, `~/.vimrc` mevcut olduğunda bile `defaults.vim`'i etkinleştirmek için, vim'de `:h defaults`'a bakın.
- gVim hem Vim' in hem de gVim' in yapılandırma dosyasını yüklerken, Vim sadece Vim' in yapılandırma dosyasını yükler.

### Kopyalama Panosu

`:yank` veya `:put` gibi Vim komutları normalde `“”` isimsiz kayıt ile çalışır. Eğer `+clipboard` özelliği mevcutsa ve değeri `unnamed` içeriyorsa, normalde isimsiz yazmaca gidecek olan Vim yank, silme, değiştirme ve koyma işlemleri bunun yerine X'teki `PRIMARY` arabelleği olan `"*` pano yazmacını kullanacaktır.

Varsayılan kaydı değiştirmek için, `:set clipboard=unnamedplus` yerine `"+` kaydını kullanabilirsiniz. `"+` pano kaydı X'teki `CLIPBOARD` arabelleğine karşılık gelir. `clipboard` seçeneğinin virgülle ayrılmış bir değere ayarlanabileceğine dikkat edilmelidir. Eğer `:set clipboard=unnamedplus,unnamed` yaparsanız, çekme işlemleri çekilen metni `“+` yazmacına ek olarak `”*` yazmacına da kopyalayacaktır (ancak, silme, değiştirme ve koyma işlemleri hala sadece `"+` yazmacında çalışacaktır).

Daha fazla bilgi için bkz `:help 'clipboard'`. `clipboard` özelliği için ayarlanabilecek başka değerler de vardır. Bu özellik için ayarlanabilecek ilk geçerli değerin yardım konusuna yönlendirmek için `:help clipboard-unnamed` kullanabilirsiniz, ardından diğer tüm geçerli değerler için yardım konusuna yönlendirilirsiniz.

İpucu

- Kopyalama ve yapıştırma işlemleri için özel kısayollar oluşturulabilir. Örneğin `Ctrl+c`, `Ctrl+v` ve `Ctrl+x` bağlamak için [2] adresine bakın.
- Vim çıktığında X panosu temizlenir. Vim seçimini X panosunda kalıcı hale getirmek için bir pano yöneticisi'ne ihtiyacınız vardır. Alternatif olarak, `autocmd VimLeave * call system("echo -n $'” . escape(getreg(), “'”) . “' | xsel --input --clipboard")` öğesini `.vimrc` dosyanıza ekleyin. (xsel paketini gerektirir).

### Sözdizimi vurgulama

Birçok programlama dili için sözdizimi vurgulamayı etkinleştirmek için:

    :filetype plugin on
    :syntax on

### Girintileme

Dosya türüne göre otomatik girintileme kurallarını etkinleştirir. Yani, hangi dosya türü üzerinde çalışıyorsan, o dosya türüne özgü girintileme kurallarını uygular:

    :filetype indent on

### Görsel sargı

Varsayılan olarak `wrap` seçeneği açıktır, bu da Vim' e pencere genişliğinden daha uzun satırları sarmasını söyler, böylece satırın geri kalanı bir sonraki satırda görüntülenir. `wrap` seçeneği sadece metnin nasıl görüntüleneceğini etkiler, metnin kendisi değiştirilmez.

Sarma normalde, bir kelimenin ortasında olsa bile, pencereye uyan son karakterden sonra gerçekleşir. Daha akıllı kaydırma `linebreak` seçeneği ile kontrol edilebilir. Bu seçenek `set linebreak` ile etkinleştirildiğinde, `breakat` dize seçeneğinde listelenen ve varsayılan olarak bir boşluk ve bazı noktalama işaretleri içeren karakterlerden sonra kaydırma gerçekleşir (bkz. `:help breakat`).

Sarılmış satırlar normalde herhangi bir girintiye bakılmaksızın bir sonraki satırın başında görüntülenir. breakindent seçeneği, Vim' e uzun satırları sararken girintiyi dikkate almasını söyler, böylece sarılan satırlar daha önce görüntülenen satırla aynı girintiyi korur. ic|breakindent}} seçeneğinin davranışı `breakindentopt` seçeneği ile ince ayarlanabilir, örneğin Python dosyaları için sarılan satırı dört boşluk daha sağa kaydırmak için (ayrıntılar için `:help breakindentopt`'a bakın):

    autocmd FileType python set breakindentopt=shift:4

### Fareyi kullanmak

Vim fareyi kullanma yeteneğine sahiptir, ancak yalnızca belirli terminaller için çalışır:

- xterm/urxvttabanlı terminal emülatörleri
- gpm ile Linux konsolu (ayrıntılar için Konsol Fare Desteği bölümüne bakın)
- PuTTY

Bu özelliği etkinleştirmek için `~/.vimrc` içine bu satırı ekleyin:

    set mouse=a

`mouse=a` seçeneği `defaults.vim` içinde ayarlanmıştır.

Not Kopyala/yapıştır bir X sunucusuna erişim varsa `"*` kaydını kullanacaktır, #Kopyalama Panosu bölümüne bakınız. Fare düğmelerinin xterm kullanımı hala `shift tuşu` basılı tutularak kullanılabilir.

Tabii, işte metnin Türkçe çevirisi:

### Ok tuşları ile satır sonlarına geçiş

Varsayılan olarak, bir satırın başında `Left` tuşuna basmak veya bir satırın sonunda `Right` tuşuna basmak, imlecin bir önceki veya sonraki satıra geçmesine izin vermez.

Varsayılan davranış, `set whichwrap=b,s,<,>,[,]` ifadesini `~/.vimrc` dosyanıza ekleyerek değiştirilebilir.

## Dosyaları birleştirme

Vim, iki veya daha fazla dosya arasındaki farkları gösteren ve bunları rahatça birleştirmeye yardımcı olan bir diff editörü içerir. Diff editörünü çalıştırmak için vimdiff kullanın — sadece birkaç dosya belirtin: `vimdiff file1 file2`. İşte vimdiff-e özgü komutlar listesi.

Eylem | Kısayol
--- | ---
sonraki değişiklik | `]c`
önceki değişiklik | `[c`
fark al | `do`
fark ver | `dp`
katmanı aç | `zo`
katmanı kapat | `zc`
dosyaları yeniden tara | `:diffupdate`

## İpuçları ve püf noktaları

### Satır numaraları

Satır numarası sütununu göstermek için `:set number` kullanın. Varsayılan olarak mutlak satır numaraları gösterilir, göreli numaralar `:set relativenumber` ile etkinleştirilebilir. Her ikisini ayarlamak, karma satır numaraları sağlar—mevcut satır mutlakken, diğerleri göreli olur.

Belirli bir satıra atlamak için `:satır numarası` veya `satır numarasıgg` kullanılabilir. Atlamalar bir atlama listesinde kaydedilir, detaylar için `:h jump-motions` bakın.

### Yazım denetimi

Vim, yazım denetimi yapabilme yeteneğine sahiptir, etkinleştirmek için:

    set spell

Varsayılan olarak yalnızca İngilizce dil sözlükleri yüklüdür (`/usr/share/vim/vim82/spell/` içinde). Daha fazla sözlük, resmi depolarda `vim-spell` aramasıyla bulunabilir. Ek sözlükler, Vim'in FTP arşivi[dead link 2025-01-22—domain name not resolved] içinde de bulunabilir. Ek sözlükler `~/.vim/spell/` klasörüne yerleştirilebilir ve `:setlocal spell spelllang=en_us` komutuyla etkinleştirilebilir (`en_us` yerine gerekli sözlüğün adını yazın).

Eylem | Kısayol
--- | ---
sonraki yazım | `]s`
önceki yazım | `[s`
yazım önerileri | `z=`
yazım doğru, ekle | `zg`
yazım doğru, oturum | `zG`
yazım yanlış, ekle | `zw`
yazım yanlış, oturum | `zW`
dosyada tüm yazım tekrarla | `:spellr`

İpucu

- İki dilde (örneğin İngilizce ve Almanca) yazım denetimi etkinleştirmek için `set spelllang=en,de` ifadesini `~/.vimrc` veya `/etc/vimrc` dosyanıza ekleyin ve sonra Vimi yeniden başlatın.
- Yazım denetimini belirli dosya türleri için (örneğin .txt) etkinleştirmek için FileType eklentisini ve dosya türü tespiti için özel bir kural kullanabilirsiniz. txt ile biten herhangi bir dosya için yazım denetimini etkinleştirmek üzere `/usr/share/vim/vimfiles/ftdetect/plaintext.vim` dosyasını oluşturun ve bu dosyaya `autocmd BufRead,BufNewFile *.txt set filetype=plaintext` satırını ekleyin. Ardından, `autocmd FileType plaintext setlocal spell spelllang=en_us` satırını `~/.vimrc` veya `/etc/vimrc` dosyanıza ekleyin ve Vimi yeniden başlatın. Alternatif olarak, sadece `autocmd BufRead,BufNewFile *.txt setlocal spell` satırını `~/.vimrc` veya `/etc/vimrc` dosyanıza ekleyip Vimi yeniden başlatabilirsiniz. Bu satırı (özellikle `*.txt`) yazım denetimi için hedef dosya türlerini içerecek şekilde düzenlemeyi unutmayın.
- Sadece LaTeX (veya TeX) belgeleri için yazım denetimini etkinleştirmek için `autocmd FileType tex setlocal spell spelllang=en_us` ifadesini `~/.vimrc` veya `/etc/vimrc` dosyanıza ekleyin ve Vimi yeniden başlatın.

### Çalışma durumunu kaydetme

Normalde, `vim`'den çıkarken açılmış dosyalar, komut satırı geçmişi, kopyalanmış metin gibi tüm gereksiz bilgiler yok edilir. Bu bilgilerin korunması aşağıdaki yöntemlerle yapılandırılabilir.

#### viminfo dosyaları

`viminfo` dosyası, komut satırı geçmişini, arama dizgisi geçmişini, giriş satırı geçmişini, kayıtların içeriğini, dosyalar için işaretleri, dosyalar içindeki konum işaretlerini, son arama/değiştirme desenini (oturum içindeki arama modunda `n` ve `&` ile kullanılacak), tampon listesini ve tanımladığınız herhangi bir global değişkeni saklamak için kullanılabilir. `viminfo` modunun kullanılabilir olması için, yüklediğiniz `vim` sürümünün `+viminfo` özelliği ile derlenmiş olması gerekir.

`viminfo` dosyanızda nelerin saklanacağını yapılandırmak için, `~/.vimrc` dosyanıza (örneğin) aşağıdakini ekleyin:

    set viminfo='10,<100,:100,%,n~/.vim/.viminfo

Burada her parametre bir tanımlayıcı ile başlar:

    'q  : q, hatırlanan düzenlenmiş dosya sayısı
    <m  : m, her kayıt için kaydedilen satır sayısı
    :p  : p, hatırlanan komut satırı sayısı
    %   : tampon listesini kaydeder ve geri yükler
    n...: viminfo dosyalarının tam yolu (bu "n" bir literal olarak belirtilmiştir)

Mevcut bir `viminfo` dosyasının, mevcut oturum bilgileriyle güncellenirken nasıl değiştirildiğine dair ayrıntılar için resmi viminfo dokümanına bakın. İşte metnin Türkçe çevirisi:

#### Oturum dosyaları

Oturum dosyaları, belirli oturumların durumunu zaman içinde kaydetmek için kullanılabilir. Her oturum veya proje için ayrı bir oturum dosyası kullanılabilir. Bu özelliğin kullanılabilir olması için yüklediğiniz `vim` sürümünün `+mksession` özelliği ile derlenmiş olması gerekir.

Bir oturum içinde, `:mksession[!] [my_session_name.vim]` mevcut dizine bir vim scripti yazacaktır; dosya adı sağlamazsanız varsayılan olarak `Session.vim` kullanılır. İsteğe bağlı `!` ile aynı ad ve yol altında mevcut bir oturum dosyası üzerine yazılabilir.

Bir Vim oturumu, terminalden Vim başlatıldığında:

    $ vim -S [my_session_name.vim]

ya da zaten açık olan bir oturum tamponunda Vim komutunu çalıştırarak:

    :source my_session_name.vim

yeniden yüklenebilir.

Nelerin kaydedildiği ve oturum dosyası seçenekleri hakkında daha fazla detay için Vim belgelerine bakabilirsiniz. Örnekler için buraya göz atabilirsiniz.

#### İmleci konumunu kaydetme

Vim wiki'de Önceki düzenleme oturumundaki dosya konumuna imleci geri yükleme konusuna bakın.

### vi komutunu Vim ile değiştirme

`vi` için `vim` alias'ı oluşturun.

Alternatif olarak, `sudo vi` yazıp `vim` almak isterseniz, vi-vim-symlinkAUR paketini yükleyin; bu, `vi`'yi kaldırıp yerine `vim`'e bir symlink oluşturacaktır. Bu symlink'i kendiniz de oluşturabilir ve `/usr/bin`'den daha üst bir konuma yerleştirerek önceliğini artırabilirsiniz.

### DOS/Windows satır sonları

Her satırın sonunda bir `^M` varsa, bu, MS-DOS veya Windows'ta oluşturulmuş bir metin dosyasını düzenlediğiniz anlamına gelir. Linux'ta satır sonu için yalnızca bir satır besleme karakteri (LF) kullanılırken, Windows/MS DOS sistemlerinde hem bir satır sonu (LF) hem de bir karaker dönüşü (CR) kullanılır. Bu karakter dönüşleri `^M` olarak görüntülenir.

Bir dosyadan tüm karakter dönüşlerini kaldırmak için:

    :%s/^M//g

Not: `^` bir kontrol harfidir. Kontrol dizisini girmek için `Ctrl+v,Ctrl+m` tuşlarına basın.

Alternatif olarak, dos2unix paketini yükleyip `dos2unix dosya` komutunu çalıştırarak dosyayı düzeltebilirsiniz.

Not Başka basit bir yol, `fileformat` ayarını değiştirmektir. `set ff=unix` ile DOS/Windows satır sonlarıyla dosyaları Unix satır sonlarıyla değiştirebilirsiniz. Tam tersini yapmak için ise `set ff=dos` komutunu verin.

### gVim penceresinin altında boş alan

Pencere boyut ipuçlarını göz ardı edecek şekilde yapılandırılmış bir pencere yöneticisi kullanıldığında, gVim işlevsiz alanı GTK tema arka plan rengi ile dolduracaktır.

Çözüm, gVim'in pencerenin alt kısmında ne kadar alan ayıracağını ayarlamaktır. `~/.vimrc` dosyanıza aşağıdaki satırı ekleyin:

    set guiheadroom=0

Not Sıfıra ayarlarsanız, alt yatay kaydırıcıyı göremezsiniz.

### Vim bir sayfa olarak

Scriptler Vim'in terminal pager olarak kullanılmasını sağlar, bu da renk şemaları gibi çeşitli vim özelliklerinden faydalanma imkanı sunar. Varsayılan sayfa aygıtını değiştirmek için `PAGER` ortam değişkenini export edin.

Vim, `/usr/share/vim/vim91/macros/less.sh` scripti ile birlikte gelir; bunun için bir alias oluşturabilirsiniz. Bu scriptin less(1) § OPTIONS'da belirtilen herhangi bir komut satırı bayrağını desteklemediğini unutmayın.

Alternatif olarak, vimpager Vim scripti de mevcuttur. Tüm komut satırı bayraklarının desteklenmediğini unutmayın; desteklenen bayrakların listesi GitHub'da mevcuttur.

Bir sayfa ile bir editör arasında bir orta yol, `[g]vim -R`'dir (`gvim -R` `gview` ile eşdeğerdir). Bu, editörün dosyaları `readonly` modda açmasına neden olur. Dosyaları değiştirmeyen tüm editör özellikleri normal şekilde kullanılabilir. Aslında, `readonly` modu açıkça geçersiz kılınabilir.

### Arama sonuçlarını vurgulama

Arama sırasında eşleşecek ilk dizgiyi vurgulamak için, `~/.vimrc` dosyanıza aşağıdaki satırı ekleyin:

    set incsearch

Arama tamamlandıktan sonra tüm eşleşen dizgileri vurgulamak için ise aşağıdaki satırı ekleyin:

    set hlsearch

Not

- `hlsearch` ayarı, tüm eşleşmeleri vurgulu tutar. Bu davranış istenmeyebilir, bu yüzden bir sonraki aramaya kadar vurgulamayı geçici olarak devre dışı bırakmak için `:nohlsearch` komutunu çalıştırın. Bu komutu sıkça çalıştırıyorsanız, bir tuşa bağlamayı düşünün.
- Bu davranış, `s` veya `g` gibi diğer komutlarla birlikte regex eşleştirirken de gözlemlenecektir.

### XDG Temel Dizin spesifikasyonu için geçici çözüm

7.3.1178 tarihinden itibaren Vim, `~/.vimrc` bulunmadığında `~/.vim/vimrc` dosyasını arayacaktır.

    "$XDG_CONFIG_HOME"/vim/vimrc

    set runtimepath^=$XDG_CONFIG_HOME/vim
    set runtimepath+=$XDG_DATA_HOME/vim
    set runtimepath+=$XDG_CONFIG_HOME/vim/after

    set packpath^=$XDG_DATA_HOME/vim,$XDG_CONFIG_HOME/vim
    set packpath+=$XDG_CONFIG_HOME/vim/after,$XDG_DATA_HOME/vim/after

    let g:netrw_home = $XDG_DATA_HOME."/vim"
    call mkdir($XDG_DATA_HOME."/vim/spell", 'p')

    set backupdir=$XDG_STATE_HOME/vim/backup | call mkdir(&backupdir, 'p')
    set directory=$XDG_STATE_HOME/vim/swap   | call mkdir(&directory, 'p')
    set undodir=$XDG_STATE_HOME/vim/undo     | call mkdir(&undodir,   'p')
    set viewdir=$XDG_STATE_HOME/vim/view     | call mkdir(&viewdir,   'p')

    if !has('nvim') | set viminfofile=$XDG_STATE_HOME/vim/viminfo | endif

    ~/.profile

    export GVIMINIT='let $MYGVIMRC="$XDG_CONFIG_HOME/vim/gvimrc" | source $MYGVIMRC'
    export VIMINIT='let $MYVIMRC="$XDG_CONFIG_HOME/vim/vimrc" | source $MYVIMRC'

`[G]VIMINIT` ortam değişkeni Neovim'i de etkiler. Vim ve Neovim için ayrı yapılandırmalar isteniyorsa, aşağıdakiler daha iyi bir seçim olacaktır:

    export GVIMINIT='let $MYGVIMRC = !has("nvim") ? "$XDG_CONFIG_HOME/vim/gvimrc" : "$XDG_CONFIG_HOME/nvim/init.gvim" | so $MYGVIMRC'
    export VIMINIT='let $MYVIMRC = !has("nvim") ? "$XDG_CONFIG_HOME/vim/vimrc" : "$XDG

Categories:

- Text editors (Türkçe)
- Console applications (Türkçe)

Hidden category:

- Pages with dead links

Vim (Türkçe)
Add topic