Alt tuşu nasıl haritalanır?


37

AltAnahtarı şu şekilde eşleştirmeye çalışıyorum :

:map <A-j> j
:map <A-k> k

ama işe yaramadı (çan Alt + j/ çaldı Alt + k).

Neyi özlüyorum?

Terminal'i OSX'te kullanıyorum, aynısı uzak Linux'ta da oluyor.


On Ctrl + v, Alt + jBen var: ?~H~F( ne zaman encoding=utf-8).

On Ctrl + v, Alt + kBen var: ?~Z( ˚ne zaman encoding=utf-8).

Eklentileri ( -u NONE) olmadan vim çalışan hiçbir fark yaratmaz.


1
Mu Alt(basın, değil tutun) ve ardından jçalışır? İle xtermen azından ben sete ihtiyacım metaSendsEscapeiçin true ... işe bu dizileri almak için aynı sorun varsa ... Bilmiyorum, ben testi yapamam bu yüzden OSX kullanmayın
Martin Tournoij

@Carpetsmoker Basma Alt, bırakma jveya diğer tuşlara basma normal şekilde çalışır. 'Seçeneği meta anahtar olarak kullan' seçeneğini kontrol ettim ve buldum , etkinleştirdim ve şimdi çalışıyor. Yani ayar metaSendsEscapehile yaptı, teşekkürler.
kenorb

3
Bu soru daha önce burada cevaplandı (daha iyi yanıt verdi): stackoverflow.com/questions/6778961/…
user3751385

Yanıtlar:


35

Linux ya da Cygwin’de böyle yapıyorum:

Eğer bastığınızda terminali ile göndermek hangi karakter İlk onay ALT+ J:

Bunu yapmak için konsola gidip koşuyorum sed -n l( catbunun için de kullanabilirsiniz ). Sonra ALT+ tuşlarına basın Jve ekrandaki karakterlerin görüyorum ^[j.

Ben yerini ^[ile \e(ben bastığımda benim terminali tarafından gönderilen budur çünkü escbenim için son dizedir) \ej.

O zaman şunu yazarım .vimrc:

execute "set <M-j>=\ej"
nnoremap <M-j> j

Ve haritalama çalışıyor.


4
:set <M-j>=\ejParça için belgeleri bulamıyorum . Ne aramalıyım?
Evgeni Sergeev

1
Cevabınız için teşekkürler, bu benim için işe yarayan tek çözümdü: Iterm + vim
newUserNameHere

Hayır, bu işe yaramıyor. Bazen ESC-J, ALT-J olarak görev yapar
user3751385

1
@EvgeniSergeev See:help :set-termcap
Rich,

9

Carpetsmoker'in yardımıyla, Terminal'in 'Alt / seçeneği meta anahtar olarak kullan' şeklinde yapılandırılmadığı görülüyor (bu özellikle GUI Terminalleri için yaygındır).

OSX üzerindeki Terminal için, Tercihler -> Ayarlar -> Klavye sekmesi -> 'Seçeneği meta anahtar olarak kullan' bölümünde . Kontrol: Seçeneği meta anahtar olarak kullanmak için Terminal'i nasıl değiştirebilirim? ( Mavericks ).

XTerm için şunları kontrol edin: XTerm'i Meta Gönderme Kaçışı ile Varsayılan Olarak Yapılandırma diyor ki:

Bu satırı kişisel .Xdefaults dosyanızda ( ~/.Xdefaults) herhangi bir yere ekleyin :

xterm*metaSendsEscape: true

Sonra config xrdb ile yeniden yükleyin. Bu adım olmadan, değişiklikler bir .Xdefaultssonraki X yeniden başlatılıncaya kadar geçerli olmaz:

xrdb -l ~/.Xdefaults

Sonra Altanahtar gibi standart eşleştirmeler :

:map <A-j> j
:map <A-k> k

iyi çalışıyor.

Yardım için bkz: :h :map-alt-keys.


4
:h :map-alt-keysBaşka bir bilgi kaynağı olarak da bakmak isteyebilir
Peter Rincker

4

Kossak'ın cevabına benzer ancak biraz basittir, hazır bilgi tuşlarına basılarak.

Tuşuna bastıktan sonra :veya normal moddayken .vimrc, haritaya girerek girişi doğrudan eşleştirin:

nnoremap 

sonra Ctrl+ tuşuna basıp Vardından kaydetmek için tuşa basmak , örneğin Alt+ . Bu şunun gibi bir şey gösterecektir:

nnoremap ^[[1;3D

ancak her ^[biri tek, değişmez bir kaçış karakteridir ve sözdizimi vurgulaması bunu göstermelidir. Değişmez kaçış (lar) ı metinle değiştirin ve <Esc>kullanmak istediğiniz komutu ekleyin:

nnoremap <Esc>[1;3D <C-w>h

OP'nin Alt+ harfleri eşleştirdiğini biliyorum , ancak varsayılan olarak eşlenemeyen bir şey için nasıl yapıldığını göstermek için okları kullandım.


Bir cazibe gibi çalıştı, çok teşekkürler!
aryndin

2

Bu benim için Ubuntu 16.04 xfce terminalinde (ve alacritty pas terminalinde) çalışıyor

Ultisnip snippet tetiğini Meta-/(yalnızca emacs snippet'inde olduğu gibi) olarak ayarlayın

let g:UltiSnipsExpandTrigger="^[/"

İşte şimdi ^[/vim yazıyorum

Ekleme modunda Ctrl-V Alt-/

( MetaOlan Altbenim PC klavyesinde tuş)


1

Eğer Control+Vbunu takiben ALT-xgösteriler ^[xEğer bu küçük komut dosyası ile çözebilirsiniz (terminal yazın) vim.wikia.com :

for i in range(97,122)
  let c = nr2char(i)
  exec "map \e".c." <M-".c.">"
  exec "map! \e".c." <M-".c.">"
endfor

Tüm alt anahtar eşlemeleri için .vimrc'ye ekleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.