2010-02-15 13 views

cevap

7

Eğer, diyelim ki, Ctrl-E, bu olurdu eşlemek isteseydi gibi bir şey:

inoremap <C-E> <C-N> 

sorun Ctrl ile - Uzay en terminalleri sadece onu görecek olmasıdır uzay olarak. X içinde bazı terminal programını kullandığınızı varsayacağım; Farklı bir şey kullanıyorsanız, ilgili ikameleri kendiniz sağlamanız gerekir.

Bash'in taleb normalde sahiptir Ctrl - "literal olarak bir sonraki tuşa tedavi" V eşlenmiş Ctrl - V ve ardından Bash komut satırında Home düğmesine basmak, satırın başlangıcına gitmek yerine, komut satırında ^[[H veya benzeri bir şey ekler. Sonra Ctrl V - - SpaceCTRL basmayı deneyin. Muhtemelen bir boşluk göreceksin. Uzay - Bu durumda

, size Ctrl bastığınızda çıkış farklı bir şey X anlatmak için kendi/usr/share/X11/xkb/* dosyaları xmodmap'teki ile aldatmak veya yazmak gerekecek. Firefox gibi programlar umursamıyor; hangi temel anahtarın basıldığını tespit eder ve hangi modifiye edicilere basıldığını kendileri için belirlerler. Uzay farklı - X Uzay ve Ctrl tedavi etmek söylemedikçe Alanı Olarak Space - Ama en terminal tabanlı programlar sadece Ctrl göreceksiniz.

Bu değişikliği tek başına xmodmap ile yapabileceğinizi sanmıyorum; muhtemelen alt düzey/usr/share/X11/xkb/* hacklemesini yapmanız gerekecektir. Bu karmaşık ve ilk etapta X'i kullanıp kullanmadığınızı bile bilmiyorum, o yüzden orada bırakacağım.

Urxvt gibi bazı terminaller kendi tuşlamalarınızı belirtmenize izin verir. Uzay - bir uzay ve size bastığınızda bile size çıkışa urxvt söyleyebilirdi Yani "\ 033I_TYPED_CONTROL_SPACE_DAMMIT" X yapılandırmak için özel bir şey yapmadan bir Control Uzay bulunuyor Ctrl zaman Firefox gibi onlar da söyleyebilir. Ve sonra vim'e adresini ile <C-N> arasında eşleştirebileceğini söyleyebilirsiniz.

DÜZENLEME: Ctrl-Space'in \0 çıktısını (klavyemde başka bir yerde yeniden eşleştirdiklerini) unutmuştum. Bu durumda, yukarıda anlattığım tüm karmaşıklık gereksizdir. Söylediklerim, daha egzotik bir haritalamayı kullanmak isteyen birine, Ctrl -konu veya Alt - Space gibi alanlara uygulanacaktır.

+1

Yine de, birileri burada neler olup bittiğini tarif etmek için çaba sarf etti. Diğer cevaplar, çözümlerinin neden işe yaradığına dair herhangi bir açıklamaya sahip değildir :-) – JepZ

18

Ctrl + Space eşleştirmesini de seviyorum.Senin durumunda

" Remap code completion to Ctrl+Space {{{2 
inoremap <Nul> <C-x><C-o>

İstediğiniz:

inoremap <Nul> <C-n>
+7

Eğer gvim'deyseniz, yerine olmasını istersiniz. – tghw

+0

'<[email protected]>' Bazı terminallerde C-Space için kullanılır (PuTTY sanırım), tahmin ediyorum C- @ –

29
if has("gui_running") 
    " C-Space seems to work under gVim on both Linux and win32 
    inoremap <C-Space> <C-n> 
else " no gui 
    if has("unix") 
    inoremap <Nul> <C-n> 
    else 
    " I have no idea of the name of Ctrl-Space elsewhere 
    endif 
endif 
+3

ile aynıdır. Not: '' ('gui_running') 'karakterine sahip olmanız gerekebilir. ("gui") 'basitçe, vim 'gui' seçeneği ile derlenmişse döndürür, şu an kullandığınız değil. – Dogbert

+0

Doğrudan unix'e bağlı değil. '', terminal emülatörü tarafından '' seçeneğine çevrilir; bu nedenle, pencerelerde aynı işi yapan bir terminal öykünücüsü de bulursanız, aynı zamanda çalışır. Ve '' '** ** ** * * * * aynı * her yerde, aynı sebepten dolayı [B'' 'ün adı değil, yalnızca 'düğmesine bastığınızda terminal tarafından üretilen bir semboldür '. – ZyX