PuTTY'yi Home / End / PgUp / PgDn'nin bash'ta düzgün çalışması için nasıl yapılandırabilirim?


123

Home, End, PageUp, PageDown tuşları ~imleci / görünümü gezdirmek yerine bash oturumumda a yazın . Bu neden oluyor ve hangi ayarları değiştirmem gerekiyor?

GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60

Asıl soru şu:

PuTTY'de, kabuk (bash) üzerindeki "Giriş" tuşuna basmak neden "~" yazıyor? Daha doğrusu, imleci yazdığım komutun başına nasıl getirmesini sağlayabilirim?

(Sebep bunun ana dizin olduğunu sanıyordum ama cevaplar bunun böyle olmadığını söylüyor.)

Yanıtlar:


150

Bağlantı> Veri sekmesi altındaki Terminal tipi Dizgiyi varsayılan “xterm” den “linux” a değiştirin. Benim için çalıştı.

görüntü tanımını buraya girin


2
Teşekkürler! Bu yöntemi kullanarak Ctrl Left / Right çalışması yaptıktan sonra ( superuser.com/a/103097/45410 ) bu sorunu yaşadım .
Edwin Yip,

4
Vurgu: Terminal -> Keyboard"İşlev tuşları ve tuş takımı" değil.
Elazar

2
Çalışır ancak fare desteğini devre dışı bırakmak gibi başka sorunlar da yaratır. öyleyse, bu benim için kabul edilebilir bir çözüm değil
Anton

Bu çözüm aynı zamanda OS X'e bağlanırken macun içerisindeki boşlukları da sağlar!
lorem maymunu

42

Bu, PuTTY'nin terminal tipini doğru ayarlanmadığınızdan veya sunucunuzun doğru terminfo tanımlarının kurulu olmadığı için oluyor.

Debian tabanlı sistemlerde, ncurses terim paketi (sürüm 5.7 + 20081213-1) macun , putty-256color ve putty-vt100 terminal tipleri için terminfo tanım dosyalarını içerir . Bu paketi yüklediyseniz, "Terminal tipi dizgiyi", Putty'nin oturum yapılandırmasında (Bağlantı -> Veri) varsayılan "xterm" yerine "macun" olarak ayarlayabilirsiniz.

Stephen Irons ayrıca çalışan başka bir terminal tipi olarak "linux" undan bahseder; Bunun önceki deneyimlerden doğru olduğuna inanıyorum, ancak son zamanlarda test etmedim.

Sistemlerimde, bu Home ve End öğelerinin düzgün çalışmasına izin veriyor, ancak PageUp / PageDown konsol penceresini kaydırmıyor. ( Yetenek gibi ncurses uygulamalarında düzgün çalışırlar ve Shift-PgUp / Shift-PgDn konsol penceresini kaydırırlar.)


Evet, kullanmak TERM=puttyya TERM=putty-256colorda en akıllıca olmakla birlikte, ne yazık ki şu anda sonuncusu 8-15 arasındaki renkler için doğru çalışmıyor gibi görünüyor (ki bu 0-7'nin parlak sürümleri olması gerekiyordu). Diğer "çözümlerin", bazen dahil olan terminaller arasındaki farkları gözardı etmemeleri nedeniyle pul pul dökülmeleri çok muhtemeldir.
SamB,

yum install ncurses-termCentOS 7'de benim için bir sonraki girişe macun ile sıraladı, teşekkür ederim.
Dolaşan Zombi

1
terminal tipinin puttyişe yaraması ancak xterm benzeri fare desteğinin kırılması (örn. Midnight Commander için)
Anton

'ncurses-termion' yüklemek benim için Debian testlerinde çalıştı.
Honchl

Bunların hiçbiri benim için değil, ben centos bağlanma macun ve ben root değilim çünkü ncurses-ter yum çalıştıramam.
Herman Toothrot

20

Bir tuşa veya bir tuş kombinasyonuna bastığınızda hangi kodun PuTTY tarafından terminalinize gönderildiğini doğrulamak istiyorsanız, yalnızca bir Ctrl+Vtuşa basmanız ve ardından istediğiniz tuşa basmanız gerekir.

Örneğin, kutumda Ana Sayfa tuşuna basmak terminalimde şu dizeyi üretecek:

^[[1~

Bu PuTTY'nin kaçış karakterini gönderdiği anlamına gelir ^ [ve ardından [1 ~ .

Bir oluşturabilir ~/.inputrcsizin dosyayı $HOMEalternatif olarak klasör veya /etc/inputrcsisteminizde bağlı dosyayı. Ardından bu dosyayı PuTTY kodları ve Bash tarafından tetiklenmesini istediğiniz Bash eylemleriyle doldurun.

Not: Her ^ [ karakteri eşdeğer \ e dizesiyle değiştirin.

Örneğimde, Ana anahtar kodumla ve satır başlangıcı işlemiyle (varsayılan olarak Bash'e bağlı olan Ctrl+A) bir satır ekleyeceğim :

"\e[1~": beginning-of-line

Bilginize, benim inputrc dosyamda aşağıdaki içerik var:

set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
"\e[1~": beginning-of-line     # Home key
"\e[4~": end-of-line           # End key
"\e[5~": beginning-of-history  # PageUp key
"\e[6~": end-of-history        # PageDown key
"\e[3~": delete-char           # Delete key
"\e[2~": quoted-insert         # Insert key
"\eOD": backward-word          # Ctrl + Left Arrow key
"\eOC": forward-word           # Ctrl + Right Arrow key

@Cimbali'den: Bu referans sayfasında mevcut olan daha fazla ikili komut (önceki geçmiş gibi: geçmiş listede yukarı) gidin .


EVET ! En sonunda ! Putty'nin terminal tipi dizgisi geriye ve ileriye doğru hiçbir şey yapmadı. Bu harika !
Cimbali

1
Bunun nedeni, tek olarak kabul edilebilir bir çözüm TERM=linuxveya TERM=puttyxterm benzeri fare desteği bölünürler. Teşekkürler!
Anton,

14

Crtl + A sizi satırın başına götürür

İşte Bash klavye kısayollarının bir listesi


13
Bu harika ve hepsi, ama Home / End beynimde kablolanmış ve sunucuyu yalnızca mavi ayda bir kez yönettiğimden, kablolama işleminin zayıf olduğunu öğrenme şansı azalıyor.
RomanSt

9

Aslında gönderdiği şey ^[[1~, aşağıdakilerden oluşan bir terminal kaçış dizisidir:

  • ^ [- kaçış
  • [- sol köşeli ayraç
  • 1 bir
  • ~ - tilde

Sen basarak görebilirsiniz Ctrl+ Vsonra Home.

Ev ve Son tuşları için PuTTY klavye ayarını rxvt olarak değiştirerek (kaçış sırasını yapan ^[[Hveya kullandığınız $ TERM'i değiştirerek (veya düzenleyerek ~/.inputrc) sorununuzu çözebilirsiniz .

Bu arada, bastığınız zamanki Homegiriş ile giriş dizini temsil eden tilde arasında bir ilişki yoktur . Örneğin, kurulumumda Page-Down, ^[[6~doğru şekilde yorumlanmasaydı, aynı zamanda bir tilde basacak olan da üretir .


Teşekkürler! rxvt Giriş tuşunu düzeltti; Son tuşu şimdi bir ding üretir. PgUp / Down gerçekten tiptedir ~ve PuTTY Klavye ayarlarının hiçbiri onları çalıştırmaz. Benim bash berbat mı, yoksa bu "normal" mi?
RomanSt

Yazarken ne alırsın echo $TERM?
Dennis Williamson,

xterm(15 karakter sınırı
argh

3
Dosyanıza "\eOw": end-of-line(bu büyük harf O’dur) eklemeyi deneyebilirsiniz ~/.inputrc.
Dennis Williamson,

Son anahtar sabit; Fikir anlıyorum. Gerçekten bu gibi kesmek olsa gerekli değildi ...
RomanSt

2

Bu seçeneklerin hiçbiri benim için çalıştı. Eski bir AIX sistemi kullanıyorum. .Profile dosyasına şu takma adları eklemek zorunda kaldım

alias __A=$(print '\0020') # ^P = up = previous command
alias __B=$(print '\0016') # ^N = down = next command
alias __C=$(print '\0006') # ^F = right = forward a character
alias __D=$(print '\0002') # ^B = left = back a character

benim için çalışmıyor, serseri
Herman Toothrot 10:16

1

Diğer yöntemlerle çalışmasını sağlayamadım. Bununla birlikte, kabuğunuz Bash olduğu sürece çalışan bu AutoHotkey komut dosyasını oluşturdum:

#IfWinActive ahk_class PuTTY
PgUp::Send +{PgUp}
PgDn::Send +{PgDn}
Home::Send ^a   ; beginning of line
End::Send ^e    ; end of line
+^Del::Send ^k  ; delete whole line after cursor
+End::Send ^k   ; delete whole line after cursor
+Home::Send ^u  ; delete whole line before cursor
^Del::Send !d   ; delete word after cursor
^BS::Send ^w    ; delete word before cursor
^Left::Send !b  ; jump word left
^Right::Send !f ; jump word right
#IfWinActive

Ancak bu bash kısayol tuşlarının tümü diğer programlarda çalışmadığından, dikkatli kullanın .


Bu, şu ana bakmamın asıl nedeni ile karıştı: screenvarsayılan ayarları olan Ctrl-A'yı kırar çünkü kaçış karakteri olarak kullanır ....
Gert van den Berg
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.