Questão Auto Completo para a fila de entrada do Windows a partir de texto na tela impressa


Eu tenho um bin que hostnames saída para stdout no seguinte formato (Normalmente, é ~ 20 linhas):

ldn0000000002;ldn0000000040;ldn00000000055;ldn0000000117;nyk0000000001;nyk0000000002;tky0000000001

Então eu investigaria vários deles por ssh <hostname> (por exemplo, ssh ldn0000000117). Copie e cole usando Ctrl+[, arrow-keys, space, arrow-keys, space, e depois Ctrl+] levaria muito tempo para destacar o texto que eu quero copiar.

É possível ter algo semelhante ao autocomplete que eu só tenho que digitar l e acertar alguma tecla (por ex. tab) forneceria ldn0000000 para a fila de entrada do windows (como :history aka Ctrl+{) e, em seguida, pressione 1 (agora ldn00000001) e tab completaria ldn0000000117?

A saída pode ser canalizada para qualquer caixa (por ex. sed) para reformatar a nova linha delimitada ou qualquer formato, se necessário.

Solução alternativa que elimina a necessidade de arrow-keys também é bem-vinda!

Eu não tenho propriedade do host, portanto não posso alterar nenhum arquivo no host remoto.


1


origem




Respostas:


Eu não sei como completar automaticamente. Então, o plano alternativo é melhorar o movimento do cursor.

No modo de cópia / rolagem, você pode usar algumas teclas de movimento. (por screen(1))

Movement keys:
h, C-h, or left arrow move the cursor left.
j, C-n, or down arrow move the cursor down.
k, C-p, or up arrow move the cursor up.
l ('el') or right arrow move the cursor right.
0 (zero) or C-a move to the leftmost column.
+ and - positions one line up and down.
H, M and L move the cursor to the leftmost column of the top, center or bottom line of the window.
| moves to the specified absolute column.
g or home moves to the beginning of the buffer.
G or end moves to the specified absolute line (default: end of buffer).
% jumps to the specified percentage of the buffer.
^ or $ move to the leftmost column, to the first or last non-whitespace character on the line.
w, b, and e move the cursor word by word.
B, E move the cursor WORD by WORD (as in vi).
f/F, t/T move the cursor forward/backward to the next occurence of the target. (eg, '3fy' will move the cursor to the 3rd 'y' to the right.)
; and , Repeat the last f/F/t/T command in the same/opposite direction.
C-e and C-y scroll the display up/down by one line while preserving the cursor position.
C-u and C-d scroll the display up/down by the specified amount of lines while preserving the cursor position. (Default: half screen-full).
C-b and C-f scroll the display up/down a full screen.

Searching:
? Vi-like search backward.
C-a s Emacs style incremental search forward.
C-r Emacs style reverse i-search.
n Find next search pattern.
N Find previous search pattern.

No seu caso,

  1. Ctrl+[ - no modo de cópia / rolagem.
  2. ?ldn - busca para trás uma palavra ldn da posição atual do cursor.
  3. n - Mover o cursor para os próximos candidatos.
  4. space (quando a posição do cursor se move para os seus desejos) defina a primeira marca.
  5. e - move o cursor para o final de uma palavra.
  6. space - defina a segunda marca e finalize o modo de cópia / rolagem.

As teclas de seta não aparecerão em nenhum lugar. :)


0