Одна из моих самых больших неприятностей при работе с bash — это хронически неработающие завершения команд. Существуют сотни запрограммированных завершений команд, и каждый день пишется все больше, некоторые из дистрибутивов (в настоящее время я использую в основном Ubuntu Linux) или апстрим, а некоторые — люди из моей компании. Неизбежно, что в любой момент времени десятки из них сломаны. Я принимаю это.
Чего я не принимаю, так это того, что некорректное завершение команд не позволяет мне выполнить завершение имени файла. Завершение имени файла имеет важное значение для эффективности моей работы; когда я не могу получить к нему доступ, это чрезвычайно утомительно и мешает моему рабочему процессу.
На какое-то время я просто отключил все завершения команд, так как решил, что надежное завершение имени файла для меня важнее, чем значение всех других дополнений команд вместе взятых.
Но... потом я решил дать им еще одну попытку, поэтому вместо того, чтобы отключать их все, я добавляю в черный список те, которые, как я знаю, сломаны, один за другим, в моем .bashrc:
#
# Blacklist for known broken command completions
#
# Command completions prevent vim'ing .jpg files!? Not ok.
complete -r vi
complete -r vim
complete -r view
complete -r google-chrome # google-chrome ./myFil<tab>
# The rest of these are gratuitous strong evil magic
# that can't be killed by "complete -r",
# so stronger good magic "complete -F _minimal" is necessary instead.
complete -F _minimal ci # ci -l ./java<tab> when ./javacpp and ./javarenumber both exist but only javarenumber has been previously checked in
complete -F _minimal alias # alias pppp ~/<tab>
Черный список работает для меня, по большей части, кроме того ужасного момента, когда я впервые обнаруживаю, что завершение другой команды нарушено, когда я пытаюсь быстро завершить имя файла. В этот момент мне нужен какой-то механизм блокировки "в случае аварийного разбития стекла".
То, что я прошу, является одним из следующих:
- (a) способ привязать ключ/клавиши только к завершению имени файла, минуя программируемое завершение команд
- (b) способ привязки клавиши/клавиш для временного отключения программируемого завершения команды для текущей команды, которую я частично набрал
- (c) какой-то другой умный ненавязчивый способ получить завершение имени файла в тот момент, когда я обнаруживаю, что оно скрыто неисправным программируемым завершением команды.