Bash 単語を移動するためのさまざまな区切り記号

Bash 単語を移動するためのさまざまな区切り記号

コマンドラインでカーソルを特定の数の引数の後ろに移動するbash emacsモードのショートカットを探しています。私が探しているものを説明するために、具体的な例(カーソルが[]ある場所)を使用します。

スタート: $ prog -v a/b/c d/e/f[]

ターゲット: $ prog -[]v a/b/c d/e/fまたは$ prog -v[] a/b/c d/e/f

理想的には、bashにカーソルを戻すように効果的に話したいと思います。Nここで、パラメータは空白以外の文字で構成される連続した文字列です。

私が試したこと:

  • 十分に長く待つと、left-arrow行きたい場所に行くことができますが、非効率的です。

  • C-a、その後right-arrow十分に長く座っています。また、非効率的です。

  • M-breadlineが「単語」だと思うものを返しますが、実際には空白、スラッシュ、ダッシュで停止しているようです。しかし、空白文字でのみ停止したいです。与えられた例では、行きたい場所にM-b行くM-bには+ + + + +を使用し、必要に応じて2回使用する必要があります。M-bM-bM-bM-bM-b

  • M-7+ 7回しM-bM-b効率性は高くなりますが、「単語」区切り記号の数を数えるには脳の力が必要です。 readlineが「単語」区切り文字を考慮するよりも空白文字を計算する方がはるかに簡単です。

理想的には、返す引数の数を指定してから、M-2+のように返すように指示できますM-b

B@m0dularはviモードでパラメータ境界が必要に応じて処理されますが、Emacsモードを維持したいと思い、コマンド自体を繰り返し返さずに返すパラメータの数を指定できるようにしたいと指摘しました。 。

メモ:私はもともとこのバージョンをリリースしましたStackOverflowにありますが、プログラミングと直接関係がないので、ここに来ると提案しました。

ベストアンサー1

必要な動作を得るためにいつでもvi-backward-bigwordAlt+Bバインドできます(他のテキストスタイルから選択することもできます)。vi-forward-bigwordAlt+Fzsh

bind '"\eb": vi-backward-bigword'
bind '"\ef": vi-forward-bigword'

それからそれを使うことができますAlt+2 Alt+B

shell-backward-wordまた、shell-forward-wordスキップシェルフラグもあります。たとえば、

cmd "first arg" $(echo second third)

"first arg"、、、$(およびechoはすべてシェルタグですsecond。通常、必要に応じてコマンド置換を引用すると、これはシェルタグになります。third)

おすすめ記事