Shell

空行上的 zsh 製表符完成

  • July 2, 2018

我想要一個我找不到的 tcsh’ism:在沒有內容的空白行上,我想按 Tab 鍵並查看相當於 ls 的內容。也就是說我想要

$ <tab>

做一些別的事然後給我一個\t。我找到了用於命令完成的絕佳資源,但不適用於這個基本案例。對此的任何幫助都會很棒!謝謝。

# expand-or-complete-or-list-files
function expand-or-complete-or-list-files() {
   if [[ $#BUFFER == 0 ]]; then
       BUFFER="ls "
       CURSOR=3
       zle list-choices
       zle backward-kill-word
   else
       zle expand-or-complete
   fi
}
zle -N expand-or-complete-or-list-files
# bind to tab
bindkey '^I' expand-or-complete-or-list-files

行首的行為Tabstyle控制。但是,只有兩種受支持的行為:insert-tab

  • 照常完成,下zstyle ':completion:*' insert-tab false
  • 在下面插入一個標籤zstyle ':completion:*' insert-tab true
  • 下一個或另一個zstyle ':completion:*' insert-tab pending[=N]

如果你只是想在那個位置完成命令,zstyle ':completion:*' insert-tab true就可以了。如果你想要一些不同的東西,比如列出目前目錄中的文件,你需要修改_main_complete.

最近討論了 zsh-workers 列表上的一個執行緒insert-tab

引用自:https://unix.stackexchange.com/questions/14230