Como desabilitar o escape automático de cotações - BASH

2

Eu tenho este código de teste no meu arquivo bash:

gtest() {
    echo 'hello'
}

bind '"\C-g\C-x": "$(gtest)\e\C-e"'

Quando eu começo a digitar algo como vim " , e então clico em C -g C-x , eu recebo vim hello ao invés de vim "hello .

Se eu digitar vim """sometext e, em seguida, pressionar C-g C-x , obtenho vim sometexthello em vez de vim """sometexthello .

Existe uma maneira de manter as cotações?

    
por whitesiroi 09.05.2016 / 09:57

1 resposta

3
bind '"\C-g\C-x": "\C-u$(gtest)\e\C-e\C-a\C-y\C-e"'

O problema foi que \e\C-e avalia a linha. É bom para executar $(gtest) , mas obviamente pode mexer com " chars.

O truque é salvar a linha com C-u , avaliar apenas $(gtest) , posicionar o cursor no início ( C-a ), restaurar a linha salva ( C-y ) e finalmente colocar o cursor no final ( C-e ).

    
por 11.05.2016 / 13:11

Tags