Vim (Türkçe)
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.
-
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
vevim-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.
- 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ınalet skip_defaults_vim=1
ekleyin. [1]. Alternatif olarak,~/.vimrc
mevcut olduğunda biledefaults.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.
- Kopyalama ve yapıştırma işlemleri için özel kısayollar oluşturulabilir. Örneğin
Ctrl+c
,Ctrl+v
veCtrl+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.
"*
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
|
- İ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 dosyayaautocmd 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, sadeceautocmd 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.
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
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
-
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
veyag
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