Можно ли включить bash_completion для:! или: г! в VIM? - PullRequest
6 голосов
/ 23 июля 2011

Я могу использовать: shell для ввода текущего dir и запуска команд. bash_completion отлично работает.

Но как заставить bash_completion работать в :! команда или : r! команда регистр?

Примечание . Я являюсь пользователем Emacs, и команда Emacs M -! не разрешает такие вещи (также Mx shell , для получения bash_completion вам необходимо Mx term ).

Ответы [ 2 ]

2 голосов
/ 24 июля 2011

Это невозможно. То, на что ссылается @Prince Goulash, - это простое завершение имени файла, выполняемое самим vim. Если вы знаете, как принудить bash к вариантам завершения конвейера, вы можете создать функцию завершения для пользовательской команды, которая в свою очередь может вызвать встроенную команду :!, но переопределение завершения для встроенных команд невозможно.

Лично я не знаю, как это сделать с помощью bash, и знаю, что попытка сделать это в zsh приводит к грязным хаки с переопределением встроенных команд zsh (например, compadd), с использованием pexpect (python), Expect (perl). ) ожидайте (tcl), zsh / zpty или что-то подобное, чтобы запускать оболочку в интерактивном режиме и изобретать механизм zsh-> vim IPC (в противоположном направлении это намного проще) (однажды я начал работать над аналогичным модулем для zsh, но остановился так как на этом пути было слишком много проблем).

1 голос
/ 23 июля 2011

Есть ли у вас

set nocompatible

в вашем .vimrc? Это автоматически включает завершение экс-режима для :!. Чтобы увидеть список возможных дополнений, вы также можете использовать

set wildmenu

и исследуйте варианты wildmode.

...