добавить к существующей директиве автозаполнения tcsh cmd

#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!