Vim (Türkçe)

İ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
Vim
in 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
Vim
i 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
Vim
i yeniden başlatın. Alternatif olarak, sadece
autocmd BufRead,BufNewFile *.txt setlocal spell
satırını
~/.vimrc
veya
/etc/vimrc
dosyanıza ekleyip
Vim
i 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
Vim
i 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-symlink
AUR
[
broken link
: package not found]
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