2009-10-09 15 views
20

Na ekranie GNU, chcę zmienić domyślne powiązanie polecenia z Alt-s (przez ulepszenie .screenrc) zamiast domyślnego Ca, powodem jest to, że używam emacs, dlatego ekran GNU wiąże klucz Ca, wysyłając "Ca" do emacs staje się nużący (jak @Nils powiedział, aby wysłać "Ca" powinienem wpisać "Ca a"), a także "Ca" w powłoce basha, i mógłbym zmienić ucieczkę na C- ale niektóre z nich są już zmapowane emacs i inne kombinacje nie są tak proste jak ALT-y. Jeśli ktoś już wykonał mapowanie klawiszy ALT, proszę dać mi znać.ekran gnu - zmiana domyślnego klawisza polecenia escape na ALT-X?

Odpowiedz

1

Nie odpowiada na twoje pytanie, ale C-a wysyła C-a do okna, prawda?

+1

Jest to mniej wygodne dla użytkowników emacs. – rampion

+0

C-a to robi. Ale problem polega na tym, że nie mogę używać wiązania C-a w emacs na ekranie. Mam nadzieję, że to dostałeś – Siva

+1

@rampion: Got to, ale pytanie brzmiało "Nie mogę użyć C-a w emacs", co uważam za błędne. @Siva: Hm. tak, nie. Naciśnięcie "C-a" powinno wysłać C-a do emacsa. Jest to niewspółmierne, tak - ale możliwe. – Nils

9

Z mojego czytania man screen wydaje się, że tylko meta znak, który można wykorzystać do screen wiążącego polecenia jest CTRL:

escape xy 

    Set the command character to x and the character generating a literal 
    command character (by triggering the "meta" command) to y (similar to 
    the -e option). Each argument is either a single character, a two-character 
    sequence of the form "^x" (meaning "C-x"), a backslash followed by an octal 
    number (specifying the ASCII code of the character), or a backslash followed 
    by a second character, such as "\^" or "\\". The default is "^Aa". 

Jeśli istnieje jakiś mapowanie, które nie korzystają w emacs, nawet jeśli to niewygodne, jak na przykład C-|, możesz użyć menedżera wprowadzania terminali do zamiany ALT-X na to, umożliwiając zamiast tego użycie wiązania ALT. To by było trochę hackowate.

+0

dzięki. To trudne, być może może to być bezpośredni sposób na wykonanie tego. – Siva

+3

Nie musisz poprzedzać klawiszem Escape Control. Używam "escape' ~ ", który ustawia go do backtick (bez kontroli). Myślę jednak, że nie możesz użyć Alt-nic. – silentbicycle

+0

@silentbicyle thanks. tak, wiem, że nie muszę poprzedzać kontroli, "escape" ~ "nie działa dla mnie. I będę stał się nużący, kiedy będę musiał ~ w dowolnym programie działającym na powłoce, dlatego wolę mapowanie CTL/ALT. – Siva

6

Ekran nie ma żadnej skróconej składni dla wiązań alt, ale możesz podać kod ósemkowy bezpośrednio. Na przykład na moim komputerze, Alt-x ma F8 kod szesnastkowy, lub 370 ósemkowej, więc oddanie

ucieczki \ 370x

w moim screenrc zmieniony kod ucieczki do Alt-X

przetestowany i działa z ekranem 4.00.03 na Linux.

Być może trzeba będzie zmienić ucieczkę, ponieważ myślę, że może to zależeć od rzeczy jak swoim językiem i CodeSet, etc: w jaki sposób znalazłem się, co mój kod ucieczka była było wpisać

$ echo -n ^QM-x | perl -ne 'printf "%lo\n", ord($_)' 

^Q polecenie quoted-insert dla readline (wstawia to, co wpisujesz bezpośrednio, bez prób interpretowania go), a Mx było dosłownym Alt-X.

+0

Próbowałem tej sztuczki i to nie działa dla mnie. Czy istnieje sposób debugowania tego? – Siva

+0

Hi Siva - Myślę, że najbardziej prawdopodobna różnica wynika z kodowania terminali kluczy meta. Używam xterm z ustawieniem xterm termcap/terminfo; możliwe jest, że inne terminale, takie jak kterm lub gnome-terminal, lub inne ustawienia TERM, używają innego kodowania. Co moja sztuczka echa wytwarza na twoim komputerze? –

5

Jestem także użytkownikiem Emacsa i ekranu. Chociaż rzadko używam Emacsa w terminalu - i jako taki w sesji screen - nie chciałem zrezygnować z C-a dla powłoki (która używa kluczy klawiszy Emacsa). Moim rozwiązaniem było użycie C-j jako klucza prefiksu na ekranie, który chciałem poświęcić. W trybach programowania Emacsa jest on powiązany z (newline-and-indent), który również wiążę z RET, więc naprawdę tego nie przeoczę.

Przy okazji: wiem, że jest to raczej porada niż odpowiedź, ale czułem, że byłoby to na tyle cenne, by móc pisać.

0

Inni użytkownicy emacs tutaj.

Najlepsze rozwiązanie, jakie znalazłem to ~ /.złożyć screenrc z następujących czynności:

# C-a :source .screenrc 

escape ^gg 

żywo aktualizowane tutaj: https://gist.github.com/1058111

Patrz także: http://ubuntuforums.org/showthread.php?t=498675

+0

btw, działa to bardzo dobrze, ponieważ^G jest sekwencją "anuluj" w emacs. Więc jeśli twoje spazmy mięśniowe "spazmują", nie robisz niczego w emacs. – audiodude

+3

Nie jestem fanem tego. C-g jest jednym z ostatnich kluczy, które chciałbym poddać Emacs. – Psyllo

+0

Zmień na "escape^\" [", aby użyć cytatu. C- \ 'nie jest domyślnie przypisany do niczego w Emacs. – Psyllo

7

Możliwe jest obejść : uciec ograniczenia poleceń używając rejestrów i : bindkey Komenda. Wystarczy umieścić to w .screenrc:

# reset escape key to the default 
escape ^Aa 

# auxiliary register 
register S ^A 

# Alt + x produces ^A and acts as an escape key 
bindkey "^[x" process S 

## Alt + space produces ^A and acts as an escape key 
# bindkey "^[ " process S 

Zobacz http://adb.cba.pl/gnu-screen-tips-page-my.html#howto-alt-key-as-escape

6

Aby Alt + X domyślny prefiks poleceń i wolne Ca, dodaj następujące wiersze do .screenrc:

escape ^|| 
bindkey "^[x" command 

Jako efekt uboczny C- | będzie również prefiksem polecenia. Jeśli potrzebujesz tych kluczy, aby być wolnym, to napraw "escape^||" odpowiednio.

+0

W jaki sposób '^ [x' jest przenoszone do' Alt-x', gdzie '^' oznacza 'Ctrl' (nie jestem pewien)? Czy '[' oznacza 'Alt'? Dzięki. – Chad

Powiązane problemy