Como posso trocar dois caracteres na entrada da linha de comando?

0

Costumo misturar caracteres ao inserir comandos na linha de comando, como gitp ush ou c d- . Gostaria de poder tocar para chamar a linha e pressionar algumas teclas para trocar os caracteres ofensivos. Eu posso deletar e redigitar um dos personagens, é claro, mas seria legal fazer com que esses erros sejam menos irritantes se eu puder.

Existe alguma maneira de transpor dois caracteres ao digitar comandos no terminal?

Normalmente, estou no Ubuntu usando o aplicativo de terminal da GUI, mas também estou me perguntando se há uma resposta que seja agnóstica sobre como o shell está sendo executado.

    
por Kevin 21.09.2017 / 23:06

1 resposta

4

Se você usa o modo de edição Vi no shell, a troca de dois caracteres é feita simplesmente digitando xp no modo normal ("modo de comando", ou seja, depois de pressionar Esc ). Isso significa literalmente "apagar o caractere sob o cursor" seguido por "colar o texto anteriormente arrancado (o caractere excluído) após o cursor".

Isso funcionará em todos os sh shells. O modo Vi é descrito no padrão POSIX .

No modo de edição do Emacs, a mesma operação geralmente está ligada a Ctrl + T ( T para "transposição").

Não há nenhuma maneira completamente de agnóstico para fazer isso. O exemplo acima funciona em bash , ksh93 e zsh , mas o modo de edição da linha de comando do Emacs não é padrão (como no padrão POSIX).

Isso é da seção racional da página vinculada acima:

In early proposals, the KornShell-derived emacs mode of command line editing was included, even though the emacs editor itself was not. The community of emacs proponents was adamant that the full emacs editor not be standardized because they were concerned that an attempt to standardize this very powerful environment would encourage vendors to ship strictly conforming versions lacking the extensibility required by the community. The author of the original emacs program also expressed his desire to omit the program. Furthermore, there were a number of historical systems that did not include emacs, or included it without supporting it, but there were very few that did not include and support vi. The shell emacs command line editing mode was finally omitted because it became apparent that the KornShell version and the editor being distributed with the GNU system had diverged in some respects. The author of emacs requested that the POSIX emacs mode either be deleted or have a significant number of unspecified conditions. Although the KornShell author agreed to consider changes to bring the shell into alignment, the standard developers decided to defer specification at that time. At the time, it was assumed that convergence on an acceptable definition would occur for a subsequent draft, but that has not happened, and there appears to be no impetus to do so. In any case, implementations are free to offer additional command line editing modes based on the exact models of editors their users are most comfortable with.

    
por 21.09.2017 / 23:12