Windowsでは、パスが(不合理に)非常に長いため、一部のリンクを端末にドラッグアンドドロップするか、ファイルマネージャからパスをコピーして貼り付けるのが一般的です。シェル初期化ファイルに同様の機能を置くことができます
cdw() { cd "`cygpath -u $1`" }
これでWindowsバージョンがありますcd
。 「C:\Program Files」がクリップにあると仮定すると、次のように入力できます。
cdw
" CTRL+ V"
そしてそこにCDがあります。私はあなたの言葉に同意します。引用符は退屈です。 cdw
CTRL+ V(二重引用符なし)はキラーになりますcd
。示されているように、
Bashでこのコマンドを利用するのは簡単です。history
ここ。しかし、私は使用していますzsh
。ここで実行すると、 history
最後のコマンド(つまりそれhistory
自体)は返されません。試行錯誤を経て次のような機能を考え出しました。
cdw(){
print -s
set $(fc -l -1 | tail -2 | head -1)
shift 2
p=`cygpath -u "$*"`
cd "$p"
}
動作しますが、複雑すぎるようです。あなたが私よりもエレガントな解決策を見つけることができるかどうか疑問に思います。
ベストアンサー1
履歴ハッキングはこの問題を解決する非常に奇妙な方法であり、非常に脆弱です。括弧などのWindowsファイル名の特定の有効な文字には機能しません。
貼り付けたWindowsパスを使用する簡単な方法があります。これを行エディタに貼り付けるのではなく、getclip
ユーティリティを呼び出します(例:cygutils-extra
最新バージョンのCygwinから)。
cdw () {
cd -- "$(getclip)"
}
cd -- "`getclip`"/../foo
$IFS
dirパスに文字(デフォルトではスペース、タブ、改行、NUL)が含まれていない場合は、二重引用符を使用する必要はありません。
パスを編集できるようにするには、キーを次にバインドします。expand-or-complete-prefix
、たとえば、次のように入力してタップし"`getclip`"
ますEsc Tab。
bindkey '\e\t' expand-or-complete-prefix
別のアプローチは、キーをバインドしてクリップボードの参照内容を挿入することです。
insert-quoted-clipboard-content () {
LBUFFER+=${(q)$(getclip)}
}
zle -N insert-quoted-clipboard-content
bindkey '^X^V' insert-quoted-clipboard-content