GNU/Linux >> Linux Esercitazione >  >> FreeBSD

Freebsd:far funzionare correttamente il mastice con Freebsd?

Sto usando FreeBSD 11 con PuTTY per SSH. I codici dei tasti della tastiera non sembrano essere impostati correttamente, ad esempio emette un segnale acustico sulla freccia su e inserisce "~" per la maggior parte dei tasti di navigazione, comprese le basi come le frecce e il tasto Elimina. La tastiera è una tastiera inglese standard del Regno Unito. Digitare è una vera seccatura.

Ho letto una serie di discussioni sull'impostazione dei codici chiave, sia in rc che in shell, quindi so che posso configurarlo in questo modo come ultima risorsa.

Ma sarebbe molto strano per un client con così tanta configurabilità e un sistema operativo con un uso così ampio, non avere alcune opzioni / impostazioni del terminale in comune che entrambi "capiscano semplicemente", che posso impostare su entrambi e voilà:il le chiavi funzionano tutte (o quasi) Il problema è che non ho idea di come trovarlo e, quando lo trovo, di come impostarlo per tutte le sessioni future.

Capisco come trovare il codice chiave inviato dal terminale per una singola chiave, quindi potrei impostare le mie chiavi in ​​questo modo, una per una. Ma vorrei trovare le impostazioni di base del terminale per la mia shell rc e per PuTTY, che ottenga il maggior numero possibile di chiavi comprese da entrambi, quindi devo solo impostare alcune eccezioni se ne ho bisogno.

Come posso farlo?

Risposta accettata:

Ci sono così tante manopole da girare e girare. E molti consigli su Internet le persone seguono ciecamente. Come sempre molte strade per Roma ma quando sai come le cose sono collegate sono molto semplici.

La risposta ultra breve è:

Modifica la stringa del terminale in Putty da xterm a putty (sotto Connessione -> Dati -> Stringa di tipo terminale).

La tipica trappola da evitare:

Assicurati di non impostare TERM altrove nei tuoi file rc.

La risposta leggermente più lunga:

Per prima cosa inizierei assicurandomi che tu stia effettivamente utilizzando le impostazioni predefinite. Dal mio laptop Windows 10 personale usando la tastiera DK (e la mappatura) mi collego a una configurazione di FreeBSD 11.1 con la mappatura DK. Nel mio caso i tasti freccia funzionano come previsto sulla riga di comando. Sinistra/destra si sposta sulla riga corrente. Su/Giù scorre la cronologia dei comandi.

L'ho verificato sia per /bin/sh (shell utente predefinita) che per /bin/tcsh (shell radice predefinita). Puoi leggere le conchiglie.

Scrivi che sai come puoi eseguire la mappatura dei tasti nel file rc della shell. Molti suggerimenti su come farlo sono in giro. Ma di solito non è quello che dovresti fare.

Troverai suggerimenti come questo per le associazioni di tasti tcsh:

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

E suggerimenti come questo per bash ( ~/.inputrc)

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

Ma invece di impostare questi collegamenti localmente per ogni sessione e ogni shell dovresti piuttosto usare termcap/terminfo per questo scopo (ne parleremo più avanti).

In questo contesto Putty è il tuo terminale.

L'impostazione predefinita per Putty è impostare TERM per la tua sessione su "xterm". Lo fa perché è ragionevolmente compatibile con xterm. xterm non è un riferimento a nessun terminale ma al programma Xterm.

Configurazione PuTTY

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

Dopo aver effettuato l'accesso, puoi verificare che questa impostazione venga applicata alla tua sessione:

echo $TERM
xterm

Se $TERM non corrisponde a ciò che hai impostato in Putty, potresti aver impostato un override nei tuoi file rc. Notare l'avviso per /bin/sh in ~/.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

Perché non utilizziamo più molti DEC VT100 fisici xterm è quello che vedrai in molti posti.

Correlati:elettrico:come rimuovere correttamente questi connettori per cavi?

Anche se mantieni TERM come xterm otterrai un output a colori con Putty e FreeBSD predefiniti come ls -G funzionerà.

Alcuni ti consiglieranno di impostare TERM a xterm-color , xterm-256 o rxvt-256color per ottenere il “corretto” supporto del colore.

Ma ricorda: Tutti questi TERM magici i valori sono solo mappature in un database. Un motivo xterm è così diffuso oggi che alcuni programmi e script controllano se $TERM inizia con xterm (che è un'idea orribile).

Questo ci riporta quindi a termcap che è l'impostazione predefinita su FreeBSD. Se vuoi usare terminfo, dovrai installare devel/ncurses. Per ulteriori informazioni, vedi:Come posso usare le voci terminfo su FreeBSD?

Puoi trovare la fonte del database termcap nel file di testo /usr/share/misc/termcap . Se apporti modifiche a questo file devi eseguire cap_mkdb per fare in modo che il sistema riconosca il cambiamento. Qui troverai la risposta al tuo enigma. C'è un esplicito TERM impostazione per il mastice denominato:putty .

FreeBSD ha quindi scelto di non modificare le impostazioni per xterm per abbinare il comportamento di Putty (probabilmente a causa di problemi di combattebilità). Ma sono stati abbastanza gentili da fornire un'ambientazione per Putty.

Quindi, se modifichi l'impostazione predefinita di Putty per Terminal-type string: da xterm a putty allora questo si riflette in TERM quando accedi. E il termcap predefinito di FreeBSD ha una voce per questo.

E per magia e senza toccare molti file rc ora hai i tasti freccia funzionanti (l'avevo anche con xterm) ma anche Home/End si sposta all'inizio/fine della riga e Elimina (elimina).

Bonus:

Sembra che la definizione predefinita dello stucco non supporti tutti i 256 colori. Puoi quindi modificare il tuo termcap e aggiungere queste due righe (ed eseguire cap_mkdb):

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

Quindi puoi impostare il tuo TERM a putty-256color . Scott Robison ha suggerito che questo dovrebbe essere aggiunto, ma il cambiamento non è stato ripreso da FreeBSD. Non riesco più a trovare questo PR nel database.

Bonus 2:

Se preferisci mantenere TERM come xterm quindi dovresti dedicare del tempo a configurare Putty in modo che corrisponda a ciò che FreeBSD si aspetta dal terminale xterm.

Se vai nelle impostazioni Terminale -> Tastiera nell'impostazione I tasti Home e Fine puoi cambiare "Standard" in "rxvt".

Con questa modifica noterai che il tasto Home funziona sulla riga di comando (si sposta all'inizio della riga). Ma End ora non fa nulla.

Quindi si tratta quindi di convincere Putty a concordare con ciò che FreeBSD si aspetta da un xterm. Giusto per dimostrare che puoi anche fare il contrario.

Correlati:come configurare correttamente l'afflusso?
FreeBSD
  1. Perché mi attengo a xterm

  2. Iniziare con Zsh

  3. Iniziare con PostgreSQL su Linux

  4. Freebsd – Aggiungi Freebsd al menu di avvio di Grub2?

  5. Far funzionare Mtp con un Galaxy Tab 2 7.0?

Iniziare con Etcher.io

Configura un server di posta con PostfixAdmin

Iniziare con Tmux

Guida introduttiva a LibreCAD

Accesso SSH basato su chiave con PuTTY

Iniziare con systemctl