Предположим, что у меня есть следующее в моем терминале:
> cp my_file_name originals/#
Где #
представляет курсор.
Есть ли сочетание клавиш для вставки my_file_name
в позицию курсора, так, чтобы я не вводил его снова? Я знаю о ALT +. для получения последнего аргумента от предыдущей команды но я хочу предыдущий аргумент от текущей команды!
Один способ сделать его использует расширение фигурной скобки:
cp {,originals/}my_file_name
Сложное использование, но более простая установка:
Можно связать нажатие клавиши (я буду использовать Ctrl-Q) к readline
copy-backward-word
функционируйте и сделайте это:
Ctrl-Alt-h Ctrl-y Alt-2 Ctrl-Q
Это означает:
digit-argument
copy-backward-word
(скопируйте два предыдущих слова), yank
(вставка)backward-kill-word
(избавьтесь от дополнительного слова),Связывать нажатие клавиши в командной строке:
bind '"\C-q": copy-backward-word'
или добавьте это к Вашему ~/.inputrc
:
"\C-q": copy-backward-word
Более простое использование, но более сложная установка:
Можно превратить ту длинную последовательность нажатия клавиши в макрос, инициированный одним нажатием клавиши (я буду использовать Alt-q здесь и использовать Ctrl-q, связывающий сверху):
При приглашении оболочки:
bind '"\eq": "\e2\C-q\C-y\e\C-h"'
или в Вашем ~/.inputrc
:
"\eq": "\e2\C-q\C-y\e\C-h"
Помните, необходимо будет также связать Ctrl-q как выше.
Теперь для копирования слова перед текущим все, что необходимо нажать, является Alt-q.
Вот иначе, хотя я не уверен, почему Вы надеетесь делать то, что Вы пытаетесь сделать, так как имя файла подразумевается в Вашем примере команды CP (и работал бы как ожидалось).
> F=my_file_name && cp $F Workspace/$F
Это могло быть расширено, также, для переименования файла:
> F=my_file_name && cp $F Workspace/$F.new
Вы могли попробовать это:
cp my_file_name
Ctrl+WCtrl+Y
originals/
Ctrl+Y
Но это не работает, когда Вы уже в конце строки. Возможно, что-то подобное могло бы работать все же. (и с копией, не сокращением)
Править: Попробуйте Alt+B, Ctrl+W, Ctrl+Y, Конец, Ctrl+Y — определенное грязное решение хотя!