O que é set-mark no bash e como devo esperar que ele se comporte?

0

Acabamos de mencionar um atalho e seu uso deve ser óbvio, mas não é óbvio para mim. Como eu posso dizer que "marquei" algo? Por que eu iria marcar algo? Essa coisa tem um escopo? Alguma vez expira? E eu recebo um aviso quando / onde ele fez? E acima de tudo, legal, eu "marquei". O que agora?

Então, o que exatamente é essa marca que eu posso definir e para que eu a utilizaria?

    
por argle 11.02.2018 / 17:59

1 resposta

1

Estritamente falando, set-mark não é um comando bash, é um comando readline. É usado para definir uma "marca" em um local específico na linha de comando que você está editando no momento.

Essa marca pode ser usada em outras operações de edição readline.

A documentação completa para readline pode não ser instalada por padrão. Dependendo da sua distribuição, pode estar em um pacote separado, com um nome como readline-doc , no formato de arquivo GNU Info (requer, por exemplo, info ou pinfo para exibir). Ele também está disponível na web no link

Ele também está documentado na página man bash e nas páginas man de vários outros programas GNU que usam readline. Execute man bash e procure por ^READLINE .

De man bash :

Readline Command Names

The following is a list of the names of the commands and the default key sequences to which they are bound. Command names without an accompanying key sequence are unbound by default. In the following descriptions, point refers to the current cursor position, and mark refers to a cursor position saved by the set-mark command. The text between the point and mark is referred to as the region.

Observe que os comandos readline são para uso interativo (por exemplo, ao editar uma linha de comando) e uso programático (por exemplo, em seu ~/.inputrc ). É por isso que alguns dos comandos têm opções / argumentos.

BTW, não há muitos comandos readline que fazem uso de marcas ou regiões (o ponto é usado com frequência, por muitos comandos readline). Eles são:

Dois com atalhos de teclado padrão:

set-mark (C-@, M-<space>)

Set the mark to the point. If a numeric argument is supplied, the mark is set to that position.

exchange-point-and-mark (C-x C-x)

Swap the point with the mark. The current cursor position is set to the saved position, and the old cursor position is saved as the mark.

Assim, você pode marcar a posição atual do cursor com Ctrl-@ ou Meta-<space> e trocar a marca pela posição atual do cursor, digitando Ctrl-x duas vezes. isto é, útil para pular para frente e para trás entre duas posições na linha.

e dois sem vinculações de teclas padrão:

kill-region

Kill the text in the current region.

copy-region-as-kill

Copy the text in the region to the kill buffer.

Para usar uma dessas opções enquanto edita interativamente na linha de comando, você precisa vinculá-las a uma chave.

    
por 11.02.2018 / 23:19