2016-06-12 2 views
6

Существует досадная разница между завершением zsh и bash вкладки:zsh: как сделать вкладку завершения не нужно пространство для следующего слова после курсора?

Представьте, что вы написать какую-либо команду и хотите добавить что-то в начале строки:

$ compute --some --stuff 

тогда перейти к началу линия и линия и начать писать sudo (плохой пример - только для демонстрации)

$ sudcompute --some --stuff 
    ^<---cursor 

bash позволит вам завершить sud - sudo, а zsh попытается заполнить sudcompute.

Итак, в этом случае вам нужно будет написать пробел, отскочить один символ и попробовать выполнить табуляцию.

В случае, если вы все еще используете bash, вы попытаетесь выполнить вкладку после sud и визуализировать команду, которую вы начали писать во что-то совершенно бесполезное.

Итак, для краткости: есть ли опция, позволяющая zsh заполнить фразу слева от курсора независимо от того, завершено ли оно пробелом?

+1

Обычно я понимаю, что мне нужно sudo после запуска команды, и поэтому 'sudo !!' выполнит трюк – andlrc

+0

[вверх], потому что это не отвечает на мой вопрос, но в этом случае это полезно. – frans

ответ

6

Просто осмотрелся в моем .zshrc файл, и я думаю, что это то, что вы хотите:

bindkey '^i' expand-or-complete-prefix 

Где ^i является <Ctrl-I>, который, как правило, табл.

+0

Это, по крайней мере, чего я хочу, спасибо! Я буду более подробно разбираться в различиях 'expand-or-complete' и' expand-or-complete-prefix', но я думаю, что вы нашли ответ. – frans

+0

@frans AFAIK Единственное отличие состоит в том, что 'expand-or-complete' будет использовать слово под курсором, в то время как' expand-or-complete-prefix' будет использовать слово слева от курсора. – andlrc