zsh
マイコンピュータで実行しています。シェルでテキストを交換できるかどうか疑問に思います。たとえば、fn[SPACE/TAB]
キーボードfunction
ショートカットOSX
のオプションがありますが、またはchrome
では機能しませんshell
。オペレーティングシステムをfn
そのように解釈するように調整する方法はありますかfunction
?
これが達成できれば本当に驚きです。
ベストアンサー1
zsh
多くのロープがあり、その一部は_user_expand
ランダムな出力にランダムな入力を提供する、いわゆる「ユーザー拡張」機能です。例えば。
# turn on completion system
autoload -U compinit
compinit
# how to mangle inputs; this is a hash or "associative array" of terms
declare -A manglements
manglements=( fn function )
# register mangler and enable _user_expand
zstyle ':completion:*:user-expand:*' user-expand '$manglements'
zstyle ':completion:*' completer _user_expand _complete _ignored
この設定.zshrc
または同様の設定では、fn
tabspaceテキストを入力する必要がありますfunction
(または少なくとも私はzsh -f
既存の設定との競合を避けるために、上記の行をzsh 5.3.1の実行に入力する必要があります)。入力を減らして設定するだけですfn
tab。add-space
zstyle ':completion:*:user-expand:*' add-space 1
しかし、スペースバーを押してウィジェットをバインドする必要がある完了spaceよりも魔法を本当に望むなら、これは少し重要で危険な変更です。tab
declare -A manglements
manglements=( fn function )
function magic-space-bar {
local -a le_vlapoi
# split on words, see zshexpn(1)
le_vlapoi=(${(z)BUFFER})
# only mangle the first word, not surprisingly in middle of some
# "echo blah fn ..." sequence (this is the same as the `alias -g`
# rake problem waiting to whap you in the face)
if [[ $#le_vlapoi -eq 1 ]]; then
local romoi
romoi=$manglements[$le_vlapoi[-1]]
if [[ -n $romoi ]]; then
le_vlapoi[-1]=$romoi
BUFFER="$le_vlapoi"
fi
fi
# ensure the typed space happens regardless
BUFFER="$BUFFER ";
CURSOR=$#BUFFER
}
zle -N magic-space-bar
autoload -U compinit
compinit
bindkey ' ' magic-space-bar
bindkey -M isearch ' ' self-insert