Автозаполнение удаляет последний символ из слов иногда

У меня есть пользовательская команда define которая получает определение слов из словаря. Я хотел сделать сценарий автозаполнения, чтобы завершить слова, которые я хочу определить, используя список слов, найденных в /usr/share/dict/words . Это то, что у меня есть до сих пор:

Сценарий автозаполнения: /etc/bash_completion.d/define

 _define() { dict='/usr/share/dict/words' cur=${COMP_WORDS[COMP_CWORD]} regex="^$cur*" words=$(grep $regex $dict) if [[ $cur != -* ]] then COMPREPLY=( $( compgen -W "$(echo $words)" $cur) ) else COMPREPLY=() fi return 0 } complete -F _define define 

Когда я нажимаю [tab][tab] иногда я получаю список слов, начинающихся с введенного слова, а иногда просто удаляет последний символ. Например, когда я define wall [tab][tab] я получаю define wal , но если я define wal [tab][tab] я получаю список слов.

Почему это происходит?

One Solution collect form web for “Автозаполнение удаляет последний символ из слов иногда”

Проблема оказалась чем-то связана с одиночными кавычками в списке слов завершения, я исправил ее, изменив регулярное выражение команды grep от ^$cur* до ^$cur[^']*$ :

 _define() { local dict='/usr/share/dict/words' local cur=${COMP_WORDS[COMP_CWORD]} local regex="^$cur[^']*$" if [[ $cur == -* ]] then COMPREPLY=() else local WORDS="$( grep "$regex" $dict )" COMPREPLY=( $(compgen -W "${WORDS}" -- $cur) ) fi } complete -F _define define 
  • Выберите имя файла Unicode в Bash
  • Как работает автозаполнение Bash?
  • Отключить запрос на аутентификацию при автозаполнении команды, которая требует привилегий root
  • bash autocompletion не работает для имен файлов (Debian wheezy 64bit)
  • Сохранение возможностей завершения вкладок в файл
  • Завершение вкладки busybox в режиме vi
  • Bash и вкладка Auto-complete
  • Скрытие завершения zsh
  • Умный полный .c и .o
  • Выполнить команду в фоновом режиме, которая устанавливает функцию env var или define
  • bash completion: как заполнить список хостов для определенного аргумента?
  • Interesting Posts

    Как настроить Postfix для предотвращения подмены отправителя?

    Получение wmctrl для работы с несколькими окнами Emacs

    Странные результаты тройного трубопровода в STDOUT & tee / dev / null> (wc -l> tmp.txt) & piping снова внедряют `cat tmp.txt`

    Создайте символическую копию другого каталога, у которого есть свои локальные данные

    В rsync можно добавить исключения из -delete с помощью внешнего файла?

    SSH на нескольких серверах и сохранение вывода нескольких команд в файле на локальном сервере

    Может ли GRUB2 совместно использовать системный раздел EFI с Windows?

    Установка пика – выбранный вами CPU не поддерживает набор инструкций x86-64

    Извлеките файлы с помощью cpio, где один или несколько путей могут содержать пробелы

    Используя vim-латекс с латексмком и выведем результат в искаженном тексте (GLib-GObject-CRITICAL)

    Поддержка 802.11ac USB-ключа в Linux

    Я не могу удалить файл из системного раздела EFI

    Трубопроводные периодические данные между сценариями Python

    Как удаленно отправлять нажатие клавиши приложения X11?

    Debian нестабилен: ia32-libs нельзя использовать

    Linux и Unix - лучшая ОС в мире.