Yanıtlar:
remap
eşlemelerin tekrar tekrar çalışmasını sağlayan bir seçenektir . Varsayılan olarak açıktır ve bu şekilde bırakmanızı tavsiye ederim. Geri kalanlar aşağıda açıklanan eşleme komutlarıdır :
:map
ve :noremap
olan özyinelemeli ve özyinesiz çeşitli haritalama komutların sürümleri. Bunun anlamı şudur:
:map j gg
:map Q j
:noremap W j
j
ile eşlenecek gg
. Q
aynı zamanda eşlenecektir gg
, çünkü j
özyinelemeli eşleme için genişletilecektir. W
eşlenir j
(ve değil gg
çünkü) j
özyinesiz haritalama genişletilmiş edilmeyecektir.
Şimdi Vim'in kalıcı bir editör olduğunu unutmayın . Bu bir var , normal mod, görsel modu ve diğer modları.
Bu eşleme kümelerinin her biri için, normal, görsel, seçim ve operatör modlarında ( ve ), biri normal modda ( ve ), biri görsel modda ( ve ) çalışan bir eşleme vardır .:map
:noremap
:nmap
:nnoremap
:vmap
:vnoremap
Bununla ilgili daha fazla yardım için bkz:
:help :map
:help :noremap
:help recursive_mapping
:help :map-modes
noremap
bazı zıt olduğu varsayım vardı map
. Bir haritayı kaldıran bir şey demek istiyorum. Cevap için teşekkürler. Beni açıkladı
:map
vb iş yok hepsi , modları tam olarak, sadece tüm yaygın olanları (özellikle, normal mod, görsel mod seçeneğini modu ve operatör beklemede). Bir eşlemenin insert, komut satırı veya lang-arg modunda çalışmasını istiyorsanız :map!
vb. Kullanmanız gerekir . (Kaynak: vimdoc.sourceforge.net/htmldoc/map.html#map-overview )
Bence Vim belgeleri bu komutların isimlendirilmesinin ardındaki anlamı açıklamalıydı. Sadece ne yaptıklarını söylemek isimleri hatırlamanıza yardımcı olmaz.
map
tüm özyinelemeli eşleme komutlarının "kökü" dür. Kök formu "normal", "görsel + seçim" ve "operatör beklemede" modlarına uygulanır. ( Dilbilimdeki gibi "kök" terimini kullanıyorum .)
noremap
tüm özyinelemesiz eşleme komutlarının "kökü" dür. Kök formu, aynı modlar için geçerlidir map
. ( nore
"Özyinelemesiz" anlamına gelen öneki düşünün .)
( Ekleme ve komut satırı için de !
böyle modların map!
geçerli olduğunu unutmayın.)
Bu bağlamda "özyinelemeli" ne anlama geldiğini görmek için aşağıya bakın.
Eşlemenin n
çalıştığı modları değiştirmek gibi bir mod harfi eklemek . Uygulanabilir modlar listesinin bir alt kümesini seçebilir (örneğin yalnızca "görsel") veya map
uygulanamayan diğer modları seçebilir (örneğin "ekle").
Kullanım help map-modes
size eşlemenin hangi modlara uygulanacağını açıklayan birkaç tablo gösterecektir.
Mod harfleri:
n
: sadece normalv
: görsel ve seço
: operatör bekliyorx
: sadece görsels
: sadece seçi
: eklec
: Komut satırıl
: insert, komut satırı, regexp-search (ve diğerleri. Toplu olarak "Lang-Arg" sözde modu olarak adlandırılır)" Özyinelemeli ", eşlemenin bir sonuca genişletildiği, ardından sonucun başka bir sonuca genişletildiği anlamına gelir.
Bunlardan biri doğru olduğunda genişleme durur:
Bu noktada, Vim'in nihai sonucun varsayılan "anlamı" uygulanır / yürütülür.
" Özyinelemesiz ", eşlemenin yalnızca bir kez genişletildiği ve bu sonucun uygulandığı / yürütüldüğü anlamına gelir.
Misal:
nmap K H
nnoremap H G
nnoremap G gg
Yukarıdaki K
, genişlemeye H
, sonra H
genişlemeye G
ve durmaya neden olur . Hemen nnoremap
genişleyen ve durduğu için durur. Anlamı G
idam edilecektir (yani "son satıra atlamak"). En fazla bir özyinelemeli olmayan eşleme, bir genişleme zincirine uygulanacaktır (gerçekleşecek son genişleme olacaktır).
Haritalanması G
için gg
tuşuna eğer geçerlidir G
ama sen basarsanız, K
. Bu eşleme, yinelemeli olarak eşlenip eşlenmediğinden K
bağımsız olarak preslemeyi etkilemez G
, çünkü genişlemenin K
durmasına neden olan 2. satır olduğundan, 3. satır kullanılmaz.
map
tüm modlar için değil, yalnızca normal, görsel, seçim ve operatör bekleyen modlar için geçerlidir.
Bir fark şudur:
:map
etmez nvo
== Normal + (+ görsel seçmek) + operatör bekleyen:map!
does ic
+ komut satırı modunda eki ==help map-modes
tablolarda belirtildiği gibi .
Yani: map
tüm modlarla eşleşmez .
Tüm modlara eşlemek için hem :map
ve 'ye ihtiyacınız vardır :map!
.
command mode
başka tarihi adıdır normal mode
. bölüm 5 vimdoc.sourceforge.net/htmldoc/intro.html#vim-modes-intro ). 'C' kısaltması 'komut satırı' içindir. Başka bir deyişle, varsayılan olarak: insert + komut satırı modları için lhs'yi rhs ile map! lhs rhs
özyinelemeli olarak eşler . Bu, varsayılan seçenek ~ / .vimrc ile açıkça devre dışı bırakılmadığı sürece geçerlidir . Bu durumda eşleme yinelemeli olmaz (önerilmez). remap
set noremap[!]
vnoremap
vevmap
Visual AND Select modunda çalışın. Sadece Görsel modunda, kullanımda bir eşleme sahip olmakxmap
vexnoremap
.