GNU/Linux >> Znalost Linux >  >> FreeBSD

Freebsd – Jak správně fungovat Putty s Freebsd?

Používám FreeBSD 11 s PuTTY pro SSH. Zdá se, že kódy kláves klávesnice nejsou vůbec správně nastaveny – například pípá při šipce nahoru a vkládá znak „~“ pro většinu navigačních kláves, včetně základních, jako jsou šipky a klávesa Delete. Klávesnice je standardní britská anglická klávesnice. Psaní je skutečná bolest.

Četl jsem řadu vláken o nastavování kódů klíčů, jak v rc, tak v shellu, takže vím, že to tak můžu nastavit jako poslední možnost.

Bylo by ale velmi zvláštní, aby klient s tolik konfigurovatelností a OS s tak širokým využitím neměl společnou nějakou možnost/nastavení terminálu, které oba „prostě chápou“, které mohu nastavit na obou a voila – klávesy všechny (nebo většinou) fungují. Problém je v tom, že nevím, jak to najít, a když to najdu, jak to nastavit pro všechny budoucí relace.

Rozumím tomu, jak najít kód odesílaný terminálem pro jednotlivý klíč, takže jsem mohl své klíče nastavit tak, jeden po druhém. Ale rád bych našel základní nastavení terminálu pro můj shell rc a pro PuTTY, aby oba pochopili co nejvíce klíčů, takže musím nastavit jen pár výjimek, pokud je budu potřebovat.

Jak to mohu udělat?

Přijatá odpověď:

Existuje tolik knoflíků, které lze otáčet a otáčet. A mnoho rad na internetu lidé slepě následují. Jako vždy mnoho cest do Říma, ale když víte, jak spolu věci souvisí, jsou velmi jednoduché.

Ultra krátká odpověď zní:

Změňte řetězec terminálu v Putty z xterm na putty (v části Připojení -> Data -> Řetězec typu terminálu).

Typické úskalí, kterému je třeba se vyhnout:

Ujistěte se, že nenastavujete TERM jinde ve vašich rc souborech.

Trochu delší odpověď:

Nejprve bych se ujistil, že skutečně používáte výchozí nastavení. Ze svého osobního notebooku s Windows 10 pomocí klávesnice DK (a mapování) se připojuji k nastavení FreeBSD 11.1 s mapováním DK. V mém případě klávesy se šipkami fungují podle očekávání na příkazovém řádku. Pohyb vlevo/vpravo na aktuálním řádku. Nahoru/dolů prochází historií příkazů.

Ověřil jsem to pro /bin/sh (výchozí uživatelský shell) i /bin/tcsh (výchozí kořenový shell). Můžete si přečíst o mušlích.

Píšete, že víte, jak můžete provést mapování kláves v souboru rc shellu. Koluje mnoho návrhů, jak to udělat. Ale obvykle to není to, co byste měli dělat.

Pro klávesové zkratky tcsh naleznete takové návrhy:

# Del(ete), Home and End 
bindkey "\e[3~"   delete-char
bindkey "\e[1~"   beginning-of-line
bindkey "\e[4~"   end-of-line

A podobné návrhy pro bash ( ~/.inputrc)

"\x7F": backward-delete-char
"\e[3~": delete-char
"\e[1~": beginning-of-line
"\e[4~": end-of-line

Ale spíše než nastavovat tyto vazby lokálně pro každou relaci a každý shell, měli byste pro tento účel raději použít termcap/terminfo (více o tom později).

V tomto kontextu je Putty vaším terminálem.

Výchozí pro Putty je nastavit TERM pro vaši relaci na „xterm“. Dělá to proto, že je přiměřeně kompatibilní s xterm. xterm není odkaz na žádný terminál, ale na program Xterm.

Konfigurace PuTTY

Connection -> Data -> Terminal-type string: `xterm`

Když jste přihlášeni, můžete ověřit, že se toto nastavení promítá do vaší relace:

echo $TERM
xterm

Pokud $TERM neodpovídá tomu, co jste nastavili v Putty, možná jste ve svých rc souborech nastavili přepsání. Všimněte si varování pro /bin/sh v ~/.profile :

# Setting TERM is normally done through /etc/ttys.  Do only override
# if you're sure that you'll never log in via telnet or xterm or a
# serial line.
# TERM=xterm;   export TERM

Protože již nepoužíváme mnoho fyzických DEC VT100 xterm je to, co uvidíte na mnoha místech.

Související:Elektrika – jak správně odstranit tyto kabelové konektory?

I když ponecháte pouze TERM jako xterm získáte barevný výstup s výchozím Putty a FreeBSD jako ls -G bude fungovat.

Někteří doporučují nastavit TERM na xterm-color , xterm-256 nebo rxvt-256color získat „správnou“ podporu barev.

Ale pamatujte: Všechny tyto magické TERM hodnoty jsou pouze mapování v databázi. Důvod xterm je dnes tak rozšířené, že některé programy a skripty kontrolují, zda $TERM začíná xterm (což je hrozná představa).

To nás přivádí zpět k termcapu, který je výchozím nastavením na FreeBSD. Pokud chcete používat terminfo, budete si muset nainstalovat devel/ncurses. Více o tom viz:Jak mohu použít položky terminfo na FreeBSD?

Zdroj databáze termcap naleznete v textovém souboru /usr/share/misc/termcap . Pokud v tomto souboru provedete změny, musíte spustit cap_mkdb aby systém potvrdil změnu. Zde najdete odpověď na svůj hlavolam. Existuje explicitní TERM nastavení pro Putty s názvem:putty .

FreeBSD se pak rozhodlo neměnit nastavení pro xterm aby odpovídalo chování Puttyho (pravděpodobně kvůli obavám o bojovnost). Ale byly dost pěkné, aby poskytly nastavení pro Putty.

Pokud tedy změníte výchozí nastavení Putty pro Terminal-type string: z xterm na putty pak se to odráží v TERM když se přihlásíte. A výchozí termín FreeBSD má pro toto položku.

A kouzlem a bez dotyku spousty rc souborů nyní máte funkční klávesy se šipkami (měl jsem to také s xterm), ale také Home/End se přesouvá na začátek/konec řádku a Del(ete) maže.

Bonus:

Zdá se, že výchozí definice tmelu nepodporuje všech 256 barev. Poté můžete upravit svůj termcap a přidat tyto dva řádky (a spustit cap_mkdb):

putty-256color:\
        :pa#32767:Co#256:tc=putty:

Poté můžete nastavit TERM na putty-256color . Scott Robison navrhl, že by to mělo být přidáno – ale tuto změnu nezachytilo FreeBSD. Toto PR již nemohu najít v databázi.

Bonus 2:

Pokud chcete zachovat TERM jako xterm pak byste měli věnovat čas konfigurování Putty tak, aby odpovídalo tomu, co FreeBSD očekává od terminálu xterm.

Pokud přejdete do nastavení Terminál -> Klávesnice v nastavení Klávesy Home a End můžete změnit „Standardní“ na „rxvt“.

Díky této změně si všimnete, že klávesa Home funguje na příkazovém řádku (přesune se na začátek řádku). Ale End now nedělá nic.

Je tedy otázkou, jak přimět Putty, aby souhlasil s tím, co FreeBSD očekává od xtermu. Jen pro ukázku, že můžete jít i obráceně.

Související:jak správně nakonfigurovat příliv?
FreeBSD
  1. Proč se držím xtermu

  2. Začínáme se Zsh

  3. Začínáme s PostgreSQL na Linuxu

  1. Obnovuji své vzrušení z práce s Ansible

  2. Jak přimět Vim, aby správně spolupracoval s Tmux?

  3. Freebsd – přidat Freebsd do spouštěcí nabídky Grub2?

  1. Získání 256 barev pro práci v Tmux?

  2. Jak Mtp pracovat s Galaxy Tab 2 7.0?

  3. Jak nastavit Git-buildpackage, Pbuilder atd. pro softwarové balení?