ターミナルを使用するときにホームキーとエンドキーをマッピングできますか?


76

MacBook Pro上のキーは、FN +左矢印またはFN +右矢印をエミュレートすることができます。または、fnの代わりにコマンド(Apple)キーを使用して、特定の設定が変更された場合。 homeend

これらはいずれもターミナルでは機能しません。

私は頻繁に行の先頭または末尾に移動する必要があり、単語ごとに前後にジャンプしたいので。

ターミナルの行にジャンプするにはどうすればよいですか?

回答:


64

使用control+ aHOMEためとcontrol+ eターミナルでENDのために。

また、使用esc+ fの先頭に移動するには、次の単語とesc+ bの先頭に移動するには、現在の単語。(現在および次のことに注意する必要があります)


2
完璧!言葉で飛び回るのはどうですか?(WindowsではCtrl +左、Ctrl +右)
-at01

@ at01回答を更新しました。
Am1rr3zA

40
ターミナルのキーは誰が設計しましたか?!?!
-at01

4
単語の先頭に移動するためにoption + left矢印とoption + right矢印を使用することを好む
アランJikamu

2
Ctrl + aとCtrl + eは機能しましたが、多くの人が提案しているキーストロークの再マッピングに頼ることなく、Shift + HomeとShift + Endの@AlphaFighterの代替手段(Shift + Fn +左矢印とShift + Fn + MacBook Proキーボードの右矢印)行頭と行末。
ジョンリック

70

行の先頭または末尾を取得する方法に関する質問に答えるために、Terminalはデフォルトでこれらのキーをそれにマップするように見えます:

  • shift + home→行頭、通常の端末の「home」キーに相当
  • shift + end→行末、通常の端末の「end」キーに相当

帰宅して「通常の」方法で作業を終了する場合(シフトは不要)、[ターミナルメニュー]→[設定]→[プロファイル]タブ(またはOS Xの一部のバージョンの設定)→[キーボード]サブタブに移動します。

次に、これらのキーを次の「シェルに文字列を送信」するように変更/追加します

  • ホーム: \033[H
  • 終わり: \033[F

\033追加する必要がある場合は、編集ダイアログの入力内でエスケープキーを押すことでパーツを取得できます。

その後、ホームとエンドは再び通常のように動作します(フェー)。

また、ターミナルではデフォルトで「alt +←」と「alt +→」が左の単語と右の単語にマップされることに注意してください。

Mac OS Xの以降のバージョンでは、ホーム/終了キーを押したときに端末画面が上下に移動した場合、ホームキーを設定し\033[1~、終了キーを使用して\033[4~目的の結果を得る必要があります(シフトは不要です) 。

コミュニティWikiであるため、この回答を修正して、より便利なキーバインディングを追加してください。


5
\ 033 [Hと\ 033 [Fのホームとエンドは私にとってはうまくいきませんでした。ただし、\ 001および\ 005はそうでした。ctrl-Aおよびctrl-Eを押すと、編集ダイアログにこれらのコードを入力できます。私はzshを使用していますが、それが違いを生むかどうかわかりません。
JW。

シフト+ホーム/エンドは仕事をしてくれた
のIsaias-bの

1
しばらくこれを理解しようとして、これは私を救った!
ポールグレー

これは、実際の端末アプリケーションをローカルで使用しているときに最適です。ただし、macOSマシンにsshした場合、これらはもう機能しないようです。これを回避する方法?!
アヒマグロ

2
@AhiTuna SSHはターミナルセッションへの接続であり、ターミナルエミュレータへの接続ではありません。入力オプションは、使用しているターミナルエミュレータによって常に定義されます。
バクサウ

39

readlineとbashを使用していくつかのヘルプを探しているようですが、ここから変更されたキーボードの非常識なリストがあります:http : //www.math.utah.edu/docs/info/features_7.html#SEC45

Ctrla 行の先頭に移動します。
Ctrle 行の最後に移動します。
Escf 単語を進めます。
Escb 単語を後方に移動します。
Ctrll 画面をクリアし、現在の行を上部に再印刷します。

Ctrlk 現在のカーソル位置から行末までのテキストを削除します。
Escd カーソルから現在の単語の終わりまで、または単語間であれば次の単語の終わりまでを削除します。
EscDel カーソルから前の単語の先頭、または単語の間にある場合は前の単語の先頭までを削除します。
Ctrlw カーソルから前の空白までを削除します。これはEscDelCtrla 、単語の境界が異なるためと異なります。

Ctrld カーソルの下の文字を削除します。
Ctrl_ 最後に行った操作を元に戻します。元に戻すと、空の行に戻ります。

そして、ここにテキストを行に戻す方法があります。ヤンクとは、キルバッファから最後にキルされたテキストをコピーすることを意味します。

Ctrly 最後にキルしたテキストをヤンクして、カーソルの位置にあるバッファに戻します。
Escy キルリングを回転させ、新しいトップをヤンクします。これは、前のコマンドがCtrlyまたはの場合にのみ実行できEscyます。


これは非常に貴重です-ありがとう-これがどこかの印刷可能なファイルとして利用可能であったことを望みます!
マットb

私はそれが完全に「最適化」されていないことを理解していますが、ファイル->印刷?
ジェイソンサラズ

うわー、これらはLinux上の用語と比較して非常に厄介です..このナンセンスを再マップする方法はありますか?
btk

はい、Bashのmanページを試してください。(自分でそれを行う方法がわかりません。)
SilverWolf

6

矢印キーの使用を好む人は、fnShift+ Left Arrowを押すとコマンドラインに戻ります。同様に、fnShift+ Right Arrowは最後まで進みます。


6

option+ leftoption+ を使用して、一度に1つの単語を移動できrightます。

homeおよびの使用に関してend、ターミナルのデフォルトのバインディングは次のとおりです。

  • shift+ home→行頭にジャンプ
  • shift+ end→行末にジャンプ
  • home →スクロールバックバッファーの一番上までスクロール
  • end →スクロールバックバッファーの一番下までスクロール

他の多くの端末アプリ(複数のプラットフォーム)では、変更されたペアと変更されていないペアが逆になります(つまり、裸homeend現在の行をジャンプするために使用され、変更されたバージョン(by shiftまたはother)がスクロールバックバッファーをナビゲートするために使用されます) )。必要に応じて、次の操作を行うことにより、ターミナルのバインディングをそのように機能させることができます。

[ターミナル]メニュー→[設定]→[設定/プロファイル]タブ→[キーボード]サブタブに移動します。

次に、キーとアクションのペアを次のように変更します。

  • ↖︎:テキストを送信:\ 033 [H
  • ⇧↖︎:トップへスクロール
  • ↘︎:テキストを送信:\ 033 [F
  • ⇧↘︎:下にスクロール

注:\ 033は、エスケープキーを押して、[編集]ダイアログの[送信するテキスト]ボックスに入力します。

そこにいる間、あなたは同様のバインディングを交換することもできます修飾および非修飾page uppage down、一貫性のあるものを維持するために:ナビゲーションキーを押してshift、ターミナル自体(文書のようなスクロールバックバッファをナビゲートする)にコマンドを表し、1を押しながらなしキーを押して実行しているものは何でもを通じて送信中に(例えば、それbashlessnanoscreen、など)。そのためのキーとアクションのペアは次のとおりです。

  • :テキストを送信:\ 033 [5〜
  • ⇧⇞:ページを上にスクロール
  • ⇟:テキストを送信:\ 033 [6〜
  • ⇧⇟:ページを下にスクロール


4

目的の機能を備えたマッピングhomeendキーは、問題を簡単に解決します。

多くの回答が投稿されていますがzsh、を使用している場合は、次のように設定できますhome

\001

およびに設定end

\005

設定-プロファイル-キーボードをクリックします。


私もこれを試しましたが、それはvimでHomeとEndを壊します:(あなたはAlfredo Cardiglianoが提案したものにマップすることができます:キー:↖アクション:\ 033OHキー:↗アクション:\ 033OF
curlingdude

これは私にとって完璧に機能しました!Nanoのみを使用しているため、ここでは問題ありません。
スターリングボーン

はい、これは機能していますが、一般的な問題を解決していません。私は、これは私の問題を解決しました。..のbashからのzshに移動し、私は、FN-SHIFT-LEFT / RIGHTを使用した。stackoverflow.com/questions/8638012/...
VLK

1

これは、vimでも動作させる最も効果的な方法です。[ターミナル]-> [設定]-> [プロファイル]-> [キーボード]に移動して、以下を追加します。

キー:↖アクション:\ 033OH

キー:↗アクション:\ 033OF


1

この問題に対する代替ソリューションを提供したいと思います。これは、viユーザーであればうまく機能します。TerminalのVim Key Bindingsは、vimスタイルで端末を使用する方法を提供します。これset -o viは、ターミナルに入力することで実行でき.bash_profile、必要に応じて自由に入力できます。この後、ターミナルは実質的にvimエディターになります。escキーを使用してコマンドモードに入り、vimのように歩き回ることができます。たとえば0、最初に移動$し、最後に移動します。また、IAを使用して、最初と最後に移動し、すぐに編集モードに入ることもできます。wまたb、1単語ずつ前後に移動できます。を押して視覚モードにしようとするとv、vimエディターが表示され、このエディターを終了するときに持っているテキストがターミナルで実行されます。

このvimキーバインディングは、他の回答から学習したすべてのホットキーを無効にすることに注意してください。


0

必要に応じて、印刷可能な形式のリストを次に示します。

http://pastebin.com/uCqwn7qs

説明の「バグ」も修正しました。これは、元々指示書で読むことができたものです。

ESC-dカーソルから前の単語の先頭を削除します。単語間であれば、前の単語の先頭までを削除します。

これは、カットアンドペーストのミスのようにひどく臭いがします。両方の部分的な文がまったく同じことを伝えるからです。単純な論理から言うと、前半は実際に「カーソルから現在の単語の先頭まで」を読む必要があります。


0

...言葉で飛び回るのはどうですか?(WindowsではCtrl +左、Ctrl +右)

# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.