Vim (Türkçe)

From ArchWiki

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:

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