OS X端末で単語をスキップする方法は?


11

Mac OSXターミナルで長いコマンドを書いたとしましょう。

say "Hello, how are you? I am good thank you. How is it going with you? Fine, thanks"

そして今、私は言葉Helloをに変えたいですHi

そのためには、「カーソル」が単語の末尾に達するまで左キーボードのキーを押し続ける(または押し続ける)必要がありますHello。その後、削除します。通常の「ホールドオプション」テクニックは、他のほとんどのOS Xアプリケーションのようには機能しません。

代わりに一度に単語をスキップする方法はありますか(またはカーソルをそこに移動する他の短い方法)?

回答:


19

コマンドライン編集は、ターミナルではなくシェルの機能です。おそらくあなたのシェルはbashであり、おそらくコマンドライン編集スタイルは「emacs」に設定されています。

便利だと思われるEmacsスタイルのキーの組み合わせをいくつか紹介します。

  • Ca: beginning-of-line
  • Ce: end-of-line
  • Mf: forward-word
  • Mb: backward-word
  • Cd: delete-char
  • Md:(kill-word次の「単語」を削除)
  • M-DEL: backward-kill-word

C- xControl+を意味するxため、CaはControl+ aです。

M- xMeta+を意味xしますが、おそらくキーボードにメタキーはありません。ので、代わりに、あなたはESCの使用できるX(すなわちEscape、その後にx)。ターミナルには、キーを押したまま押す前にESCを自動的に送信する設定がありますOption。この機能を使用すると、Mac OS XがOption修飾子を使用するときに通常提供する拡張文字処理が無効になります。あなたは、いくつかの拡張文字を使用して持つようにしたいのであれば、Option+ xESCに送るXを、あなたは、この有効にすることができターミナルオプションを選択します。

あなたの例で「こんにちは」に移行する方法はたくさんあります。

  • 「Hello」の検索:Cr H ello Cj(またはESC)
    • 通常のEmacsでは、RET(Return)を使用して現在の場所で検索を終了し、編集に戻ります。しかしbashでは、インクリメンタル検索がアクティブであっても、デフォルトのバインディングによりRET(つまりCm)は常に現在の行を実行します。したがって、Cj / ESC部分は通常のEmacsからの逸脱です。
  • 行の先頭にジャンプして前方に移動します:Ca Mf Cf(または
  • 行の先頭にジャンプしてから、単語で移動します:Ca Mf Mf Mb
  • Mbを多く使用します(OptionをMetaにマップする場合にのみ実際に実行可能です)。

希望する交換を行う方法もいくつかあります。

  • 単語を削除して置き換えます:Md H i
  • 文字を削除して置換:Cd Cd Cd Cd Cd H i
  • 「H」を過ぎて次の作業を削除し、置き換えます:Cf Md i
  • 「H」を過ぎて残りの文字を削除し、それらを置き換えます:Cf Cd Cd Cd Cd i

単語の終わりで停止した場合(Ca Mf Mfを介して)、M-DEL H iを使用できます。

bind -P | less他の興味深いバインディングを見つけるようなことをするかもしれません。詳細については、bash manページreadlineセクション(またはbash情報ページのreadline部分)を参照してください。


わかりました、これは実際には質問に関係しませんが、キーボードのキーのように見える単語をそこにどのように入れますか?
ワッファー

1
@氏。男:<kbd>要素を使う。HTMLサブセットは、ここのマークアップで許可されています。外観は、タグのサイトローカルスタイル(背景、境界線の色、境界線のスタイル、境界線の幅など)によるものです。私の投稿のソースマークアップを確認できます(このページの「ソースの表示」)。参照してくださいmeta.stackexchange.com/questions/5527派手なスタイルは、MSOで無効になっているにもかかわらず:meta.stackexchange.com/questions/1939/#23571
クリス・ヨンセン

これが明白かどうかはわかりませんが、それを理解するのに1分かかりましたが、メタキーのないMBPで、デフォルトのターミナル構成を使用しています。単語を前後に移動するには、Escを押してからF、またはEscを押してからBを押します。上で説明した方法は、Esc + xを押してからfまたはbを押すことでした。
cwd

IDEに合わせてctrlまたはfn +矢印キーを実行できるように、環境またはシェルを変更する方法はありますか?
-codecowboy

1
set -o vi.bashrcを追加してviバインディングを使用することもできます!gnu.org/software/bash/manual/html_node/...
ウィルマン

2

のデフォルトのreadlineバインディングforward-wordはMeta-Fです(bash(1)manページ、READLINEセクション、サブセクションを移動するためのコマンド)。ただし、OS XでMetaが何に変換されるかはわかりません。おそらくオプション。


+1-あなたは実際に正しい。これはOSXのbashで動作します
Yuval
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.