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.