Esc anahtarım çalışmadığında ESC sinyalini vim'e nasıl gönderirim?


Yanıtlar:


7

Mevcut çözümlere rağmen, Vim'deki geleneksel çözüm, .vimrcyapılandırmanızdaki anahtarları yeniden eşlemektir . Aslında, birçok Vim kullanıcısı daha kolay ulaşılabilir bir anahtara sahiptir Esc. Popüler seçenekler Ctrl+ Enter, veya jjvb.

Bunu etkinleştirmek için, aşağıdakine benzer bir şey ekleyin .vimrcve yeniden yükleyin / Vim'i yeniden başlatın:

" Shift-Enter
inoremap <S-CR> <Esc>
" Double-j
inoremap jj <Esc>

Daha fazla bilgi ve alternatifler


1
Eyüp, Vim yolu bu. Learn Vim the Hard Way (kitap) tarafından tanıtılan bir başka yaygın yol dainoremap jk <Esc>
grochmal

Bu güzel bir çözüm, ancak sadece Ctrl + Enter + j kullanmanın sorunu nedir?
Sandra Ross

@SandraRoss Gerçekten hoşunuza giden herhangi bir tuş kombinasyonunu kullanabilirsiniz (ancak bazılarının, örneğin Ctrl-Enter, macOS üzerinde çalışmadığına dikkat edin). Bununla birlikte, Ctrl + Enter + j yazmak bana daha zor geliyor ve dürüstçe Vim'de değiştirici olmayan iki tuşla (Enter, j) üç tuş kombinasyonunu yapılandırabileceğinizi bilmiyorum.
Konrad Rudolph

Tamam, anladım. Aslında, Ctrl + Enter + jj benim için çalışmıyor, çünkü gerçekten, macos X kullanıyorum. En azından, sadece Ctrl + j için ne girmem gerektiğini söyleyebilir misiniz?
Sandra Ross

@SandraRoss Bunun için inoremap <C-j> <Esc>çalışmalı. :-)
Konrad Rudolph

32

Ctrl- [terminale fiziksel Escanahtarla aynı karakteri gönderir . İkincisi, genellikle birincisi için kısayoldur.


3
Bir zamanlar gerçek bir vt220 terminalim vardı ve klavyesinin bir Escapeanahtarı yok. Basmak Ctrl+[oldu sadece üretmek için bir yol Escape.
Kusalananda

11

Tek bir anahtarı kullanabilmek istiyorsanız, saf bir * nix çözümü (Vim eşlemeleri olmadan) olarak başka bir anahtarı tanımlayabilirsiniz Esc. Emacs kullanıcıları eşleştirmek Tıpkı CapsLockiçin Ctrlbazı Vim kullanıcıları remap (ben dahil) CapsLockiçin Esc. Bu, X11 kullanan tüm * nix'ler için geçerlidir.

Tuşun anahtar kodunu almak için kullanın xev -event keyboard(ve sonra tuşuna basın CapsLock) CapsLock(benim için 66 tuş kodudur). Ardından xmodmapanahtarı yeniden eşlemek için kullanabilirsiniz :

xmodmap -e 'remove Lock = Caps_Lock' -e 'keycode 66 = Escape'

Bunu girişte almak için xmodmapifadeleri ~/.Xmodmapaşağıdaki gibi ekleyebilirsiniz :

remove Lock = Caps_Lock
keycode 66 = Escape

Her ne kadar ikinci bölüm YMMV için, çünkü tüm ekran yöneticileri çalışmıyor ~/.Xmodmap. Sen eklemeniz gerekebilir xmodmap .Xmodmapiçin .xinitrcbazıları üzerinde.


Ne demek istediğini tam olarak biliyorum. Bu haftanın başlarında gördüm
Sandra Ross

Bunu yapardım, ama Kompozisyon anahtarım olarak CapsLock kullanıyorum (:
DopeGhoti

6

Benim için çalışan ve bence ESC'den daha kolay olan Ctrl-C'yi deneyebilirsiniz. Ancak varsayılan olarak etkin olup olmadığından emin değilim.


CTRL-C ASCII 0x03, SIGINT'i kabuğa gönderir - ESC ile aynı değildir.
kedi

@cat Vim'de temelde aynı şekilde çalışıyor. Her zaman Esc yerine Ctrl-C kullanıyorum
Erik W

1
@cat: Ücretsiz olarak alıyorsunuz, çünkü vim'de o işleyici var. Kendiniz bir şey yapmanız gerekmez. Bu cevap kutudan çıkıyor; Sadece denedim. Genel olarak herhangi bir uygulama için çalışır mı ? Hayır, ama istenen şey bu değildi.
Monica ile Hafiflik Yarışları

2
@cat: Gerçekten mi? Başlık "esc anahtarım çalışmadığında ESC sinyalini vim'e nasıl gönderirim?" , tek etiket vim'dir ve soruda açıklanan sorun Vim'in ekleme modundan kaçmakla ilgilidir. Sorunun özetleyici kısmı: "Ekleme modunu serbest bırakmak için kullanılan başka bir anahtar var mı?" Bu Vim ve ekleme moduna özgü değilse, ne olduğunu bilmiyorum!
Monica ile Hafiflik Yarışları

1
@LightnessRacesinOrbit Başlığı ilk gördüğümde, "Esc için kullanılan başka bir anahtar" dı ve soru hiç de spesifik görünmüyordu vim. afedersiniz! ¯_ (ツ) _ / ¯
kedi

-3

Ctrl + F2

Varsayılan olarak etkindir. Herhangi bir ayar yapılandırmaya gerek yoktur.

Yapabileceğiniz normal moda geçeceksiniz :q! or :wq.


3
Ctrl+F2bir kaçış gönderebilir, ama başka şeyler de gönderir.
Kusalananda
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.