#shell #tcsh #tab-completion
#оболочка #tcsh #вкладка-завершение
Вопрос:
Я хотел бы добавить дополнительные части к существующему завершению команды (у меня нет доступа к первому созданию.)
следующее не работает:
complete myscript.py `complete myscript.py` 'n,-t,(t1 t2),'
Это добавляет дополнительные галочки (‘), и автозаполнение прерывается.
Хотелось бы увидеть рабочий пример. Спасибо!
Ответ №1:
Итак, вам просто нужно убрать лишние кавычки, которые вы получаете, когда спрашиваете, как myscript.py завершается.
complete myscript.py `complete myscript.py | sed s/'//g` 'n,-t,(t1 t2),'
Это должно решить проблему дополнительных кавычек (хотя, если ваши существующие полные шаблоны содержат нужные вам кавычки, вам понадобится более сложный шаблон sed для правильной очистки этого вывода).
Комментарии:
1. Это было первое решение, которое я попробовал, когда столкнулся с проблемой 🙂 На самом деле я попробовал более сложное регулярное выражение: sed ‘s/^.(.*).$/1/’ Но в результате была нарушена полная команда.
Ответ №2:
Я не смог найти способ добавить к существующему complete, поэтому я решил создать новый файл «на лету» в моем cshrc и исходном коде, переопределив предыдущую директиву complete:
set filename = `date ' %Y-%m-%d-%H-%M-%S'`
set cmd_arr = ( scrpt1.py scrpt2.py scrpt3.py )
foreach c ($cmd_arr)
complete | grep $c | sed 's;$; 'n,-r,`/home/$USER/complete_rev.py`,';' | sed 's/^/complete /' >> $filename
end
source $filename
rm $filename -f
C’est tout!