Я просто печатал что-то вроде:
mv foo/bar/poit/zoid/narf.txt
и вдруг понял, черт возьми, я должен снова набрать большие части этого параметра
mv foo/bar/poit/zoid/narf.txt foo/bar/poit/zoid/troz.txt
Даже с табуляции, довольно больно. Я знаю, что могу скопировать и вставить параметр, выделив текст и щелкнув мышью, но этого недостаточно. Я хочу остаться на клавиатуре.
Так есть ли способ скопировать вставить текущий параметр строки с помощью клавиатуры?
bash
readline
line-editor
k0pernikus
источник
источник
mv foo/bar/poit/zoid/{narf.txt,troz.txt}
вместо того, чтобы печатать / копировать длинный адрес дважды.mv foo/bar/poit/zoid/{narf,troz}.txt
. Это работает особенно хорошо, если у нас есть что-то вроде.../zoid/this_source_file_has_to_be_patched.c{,.orig}
Ответы:
Если я планировал заранее, я использую расширение скобки . В этом случае:
Вот еще один подход с использованием
readline
сочетаний клавиш по умолчанию :mv foo/bar/poit/soid/narf.txt
: Началоunix-word-rubout
удалитьfoo/bar/poit/soid/narf.txt
yank
пространство,yank
чтобы снова попастьmv foo/bar/poit/soid/narf.txt foo/bar/poit/soid/narf.txt
backward-kill-word
дважды удалить последнийnarf.txt
troz.txt
: введите другую часть хвостаЕсли вы используете нетривиальное количество времени, используя
bash
оболочку, я бы рекомендовал периодически читать список стандартных ярлыков и выбирать те из них, которые кажутся полезными для изучения и включения в вашу рутину. Глава 8bash
руководства - хорошее место для начала. Знание ярлыков действительно может повысить вашу эффективность.источник
.txt
, вы можете нажать Ctrl + Left (или любой другой вызывающий ярлыкbackward-word
), затем оставьте один символ, затем Alt + Backspace и введитеtroz
.Расширение истории фактически работает и для текущей команды, используя указатель события
!#
. Объедините это с указателем слова для последнего аргумента -$
- чтобы получить параметр, который вы только что ввели. И вы можете использовать все обычные модификаторы поверх него, поэтому, если, например, вы переименовываете файл в далекой директории, вы можете просто набрать:источник
magic-space
опцией bash в inputrc для автоматического расширения расширений истории. (Я не мог использовать ответ с наибольшим количеством голосов, потому что я установил ^ W, чтобы разбить на слешах, так как это обычно более полезно.)alt+backspace
обычно уже останавливается на разделителях слов, таких как косые черты, поэтому вам не нужно менять способ^W
получения этой функциональности, вы можете удалить как слова, не содержащие символов, так и слова сКак и в вашем примере, вы можете использовать следующую конструкцию:
или даже (как предложил Ансгар Эстерманн ):
вместо того, чтобы печатать / копировать длинный адрес дважды.
источник
Играя вокруг, я получил это на работу:
Нажмите, Enter
чтобы сохранить последний параметр.
Теперь используйте, ↑чтобы получить последний набранный в строке назад. Введите пробел и для получения последнего использованного параметра используйте:
Alt + .
Я ненавижу провоцировать ошибку, но в этом случае использования она справляется.
источник
Вы можете легко использовать переменные:
Или в вас случае (закладка примечание конкурс работ для в части):
источник
У меня есть это в моем
~/.inputrc
:!#
текущая строка,:$
последнее слово и\e^
естьhistory-expand-line
.источник
Для
zsh
меня полезны следующие сочетания клавиш.Поэтому я нажимаю Alt- Mчтобы повторить последний аргумент Alt- Kесли я хочу удалить части за концом пути.
Вот полезная ссылка на некоторые виды поведения, которые вы можете отобразить.
источник
Краткое интерактивное двухэтапное решение
тип:
echo foo/bar/poit/zoid/narf.txt
Это делает
foo/bar/poit/zoid/narf.txt
доступным для Alt- .ярлык в bash.тип:
mv
и удар Alt- ., Space, Alt-.Вы получите
mv foo/bar/poit/zoid/troz.txt foo/bar/poit/zoid/troz.txt
. Теперь вы можете легко изменить последнее слово.Полуночный командир
Этот инструмент, который может быть (очень) удобен, - файловый менеджер, работающий в консоли. Это дает вам возможность интерактивно копировать имена файлов и пути к каталогам в командную строку. Midnight Commander показывает вам две панели (слева и справа), которые содержат содержимое различных каталогов.
Краткое руководство:
Это самый быстрый способ, который я нашел до сих пор - после того, как я привык к ярлыкам.
источник
Используйте то же самое в {,} "дубликаторе". То есть:
источник