аварийное отключение неработающих команд в bash?

Одна из моих самых больших неприятностей при работе с 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) какой-то другой умный ненавязчивый способ получить завершение имени файла в тот момент, когда я обнаруживаю, что оно скрыто неисправным программируемым завершением команды.

person Don Hatch    schedule 09.08.2016    source источник


Ответы (1)


Используйте Alt+/. Он завершается как имя файла, а не через программируемое завершение.

С 1_:

complete-filename (M-/)
  Attempt filename completion on the text before point.
person that other guy    schedule 09.08.2016
comment
Фантастический! Это действительно значительно улучшит мою жизнь. - person Don Hatch; 09.08.2016