ターミナルのホーム/エンドコンボで⌘←と⌘→を機能させるにはどうすればよいですか?


21

なぜんfn- - または他の)ターミナルにホーム/終了の操作を行いますが- 他のどこでも動作しますか?

だから、質問を明確にすることは、ターミナルテイクようにする方法であるCommand+ 家庭と終了のために?

回答:


21

便利なことですが、Terminalはあなたが求める機能を簡単に提供することはできません。

理由は、ターミナル内で実行されるプログラムには、カーソルを行の先頭/末尾に移動するためのさまざまなルールがあるためです。次に例を示します。

  • bash(および他のシェル)CtrlACtrlE
  • viを使用0して$/Shift4

他のプログラムは他のキーを使用する場合があります。行の先頭/末尾にカーソルを配置するためのユニバーサルキーの組み合わせはありません。

もちろん、ターミナルは多くの一般的なプログラムのキーの組み合わせのリストを維持し、実行中のものをチェックして正しいキーを送信するか、シェル内の行の先頭にカーソルを移動 like ←のようなメニュー項目を提供してから送信することができますCtrlA舞台裏で。しかし、Appleのエンジニアは、CLIの領域に挑戦すれば、その特異性を知っていると考えたと思います

注意点として、ターミナルが提供OptionしてOptionいる振る舞うでbashあなたが期待通りと前/次の単語の先頭にカーソルを移動します。これは、これらのキーの組み合わせがEscbandにマッピングされているためですEscb(詳細についてはman bash、「移動用コマンド」セクションを参照してください)。ではvi、たとえば、後者(種類)のみが機能します(この回答の最後でviOptionおよびで動作するように設定する方法を示しますOption)。

しかし、おかげでのAutomator、AppleScriptとbashのエイリアスにあなたが得ることができるして仕事にbash(そしておそらく他のシェル)とvi

最初のステップは、マップにあるするCtrlACtrlE。2番目のステップでは、and viを尊重するように設定する方法を示します(その結果、andと互換性があります)。CtrlACtrlEvi

マップするCtrlAと、CtrlE

  1. ターミナルで、設定...>設定> [アクティブなプロファイル]>キーボードに移動します。 ここに画像の説明を入力してください

  2. を押し+、「左カーソル」、「Control-Shift」を修飾子として選択し、アクション「テキストを送信:」を選択します。次にCtrlA\001テキストフィールドに表示されます)を押して、次の確認を行いOKます。 ここに画像の説明を入力してください

    (この回答の以前のバージョンでは、「Shift」を修飾子として使用しました。この設定shiftは、すぐに手を離さないと、前の「ターミナル」タブを表示すると競合することに気付きました。修正します。)

  3. 「右カーソル」のキーの組み合わせを追加しますが、CtrlE\005テキストフィールドに表示されます)を押します。で確認しOKます。

  4. Automatorを開き(たとえば、ヒットspaceしてSpotlightを起動し、Automatorと入力します)、[ファイル]> [新規]を選択し、Service次を選択します。

    ここに画像の説明を入力してください

  5. Run AppleScript右ペインにドラッグします。 ここに画像の説明を入力してください

  6. 次のスクリプトを入力します。

    on run {input, parameters}
        tell application "System Events"
            tell application process "Terminal"
                key code 123 using {shift down, control down}
            end tell
        end tell
    end run

    として保存Move Cursor to Beginning of Line

    ここに画像の説明を入力してください

  7. このスクリプトで手順4.〜6.を繰り返します。

    on run {input, parameters}
        tell application "System Events"
            tell application process "Terminal"
                key code 124 using {shift down, control down}
            end tell
        end tell
    end run

    として保存Move Cursor to End of Line

    ここに画像の説明を入力してください

  8. これは、ターミナル>サービスが現在どのように見えるかです:

    ここに画像の説明を入力してください

vi尊重するように設定しCtrlACtrlE

  1. .bashrcお気に入りのエディターで開き、次の行を追加します。

    alias vi='vim -c "map <C-A> 0" -c "map <C-E> $" -c "map <Esc>b B" -c "map <Esc>f E"'

    最初の二つmapのコマンドは言うvim解釈するControlEControlAよう$0、それぞれ、先頭または行の末尾にカーソルを移動しています。

    最後の二つmapのコマンドが伝えvim押したとき、あなたが期待するよう一度にカーソル1ワードを移動するoptionOption

注意事項

またはを押す瞬間とカーソルが実際に移動する瞬間との間に短い遅延があることに気付くでしょう。

CtrlA/ を尊重するプログラムでのみ機能CtrlEすることを覚えておいてください。そのため、ターミナルで使用する各プログラムの特定のキーの組み合わせを学習したい場合があります。

(macOS Sierra 10.12.4でテスト済み)


3
詳細な答えをありがとう、Appleに次の再設計時にホーム/終了ボタンを含めるようにという請願があります:
ジャッキー

お手伝いできてうれしいです。
ジャウメ

うわー、これはすべて
おかしな

これは良い答えviですが、端末とはまったく異なるアプリケーションである外部情報をすべて除外することで改善できます。
公理学派

1
それは素晴らしいトリックです。私はまた、「ホーム」と「終了」のキーコードを送信することで実行されているAppleScriptを得ることができた:「「キーコード119を」「キーコード115」と
Keymon

2

もちろん可能です。

まず、HOME / ENDキーを備えたWindowsキーボードを使用している場合は、(Double / Lineの最初)のように動作させるために、無料のツール「DoubleCommand」を使用できます。

第二に、特にターミナルについては、設定、キーボードに移動し、左上を指す矢印のようなアイコン/キーを編集し、「テキストを送信」を選択してctrl + aを入力します。できた!

終了ボタンについても同じです。

PCキーボードがない場合は、他のキーの組み合わせでも同じことができます。

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