No shell tcsh como encontro uma palavra em particular no prompt de comando?

0

Suponha que eu tenha a seguinte linha no meu prompt de comando e o cursor esteja na linha e / ou no início da linha usando ( CTRL + A )

[subhrcho@slc04lyo pcbpel]$ abc def ghi jkl

Como posso navegar para uma determinada palavra, por exemplo, para def . Eu estou usando o tcsh shell em linux com ligação padrão, o que eu suponho ser o modo emacs .

P.S: Eu não tenho uma chave Meta no meu teclado. Eu posso avançar ou retroceder entre palavras usando CTRL + f e respectivamente. Então eu acho que minha chave Meta é a tecla Esc . Por favor, corrija-me se essa presunção estiver errada . Alt não está funcionando como meta-chave . Eu dei uma olhada em a documentação do emacs mas invocando CTRL-s w e pressionando Enter não está funcionando para mim. Apenas tentaria executar o que estiver lá no prompt, primeiro anexando um caractere w a ele e o prompt dirá:

[subhrcho@slc04lyo pcbpel]$ abc def ghi jklw
abc: Command not found.
    
por Geek 07.08.2013 / 06:49

1 resposta

2

Por Meta-x tcsh significa que espera o caractere ESC ASCII (também conhecido como ^[ ou \e ) seguido por x . Você sempre pode fazê-lo pressionando Escape e x rapidamente em seqüência, ou alguns terminais o fazem pressionando Alt-x .

Alguns outros terminais enviam o caractere x com o 8o bit definido ao pressionar Alt-x . Com xterm , você pode alterar isso adicionando:

XTerm*metaSendsEscape: true

para um arquivo de recurso X11.

Agora, para pesquisar em tcsh , se você deseja emular emacs / zsh Ctrl-R ou Ctrl-S no modo emacs , você terá que ligar os widgets i-search-back e i-search-fwd :

bindkey '^R' i-search-back
bindkey '^S' i-search-fwd

No entanto, note que, geralmente, para o driver do terminal, ^S é o caractere stop que pausa a entrada e saída do terminal (reiniciado com ^Q ). Então, se você quiser ligar ^S , terá que desabilitar isso desabilitando o controle de fluxo:

stty -ixon

Ou ligue stop a algum outro caractere:

stty stop '^T'
    
por 07.08.2013 / 08:22