vimでカーソルをファイルの最後に移動


409

Vimでカーソルをファイルの最後(つまり、最後の行の最後)に移動する場合は、6つのキーストロークを入力する必要があります。

<ESC>G$a- キーボードレイアウトではESC+ Shiftg+ Shift4+ aに変換されます。

これをより効率的に行うにはどうすればよいですか?

私は多くの異なるマシンで定期的に作業しているため、.vimrcを常に変更できるとは限らないため、そのファイルを編集または作成しなくても回答を探しています。


8
指摘したいのは、表示しているコマンドは次のように表す必要があり<esc>G$aます。、大文字を大文字にすることでシフトを表示します。$キーボードに関係なくこのキー($)の機能は変化しないため、Shift + 4の代わりにを表示しますが、Shift + 4を実行すると、意味が変わる可能性があります。:)
グレドゥアン

3
@エドゥアン私は概ね同意しますが、この場合、実際のキー操作も関係します。私は両方を追加しました:-)
timss 2013年

@Eduan効率の問題では、実際のコマンドは重要ではありません。キーストロークは行います。また、キーボードのレイアウトは言語によって大きく異なるため$、USキーボードのどこにあるのかはわかりません$。コマンドを入力するアメリカ人にとっては、たった1回のキーストロークである可能性があります。私は(ドイツ語のキーボードでは)2つのキーストロークであることを明示的に示したかったのです。

1
@何IC。理解できます。それを指摘したかったので、将来的にあなたは知っています。:)
greduan 2013年

回答:


410

明示的に実行する前に、行の末尾に移動する必要はありませんa、使用しますA
行末に[count]回テキストを追加します

<ESC>GA


3
通常モードのままにしたい場合G)(または<ESC>G)、挿入モードで最後の文字を超えて通常モードで終了したい場合)。キーストロークの数は同じですが、挿入モードではなく通常モードになります。挿入モードのコマンドや編集ではなく、最後の単語に対して通常のコマンドを実行したい場合に、これが役立つことがあります。
アレハンドロ

1
@Alejandro便利です)が、[count]文を前に移動するため、たとえば最後の行がの場合、行末に移動しませんThis is a test. Foo bar.。ただし、これは多くのコードで機能しますが、多くの場合、これは文とは見なされないため、とにかく最後に到達します。
timss

次の行を書き込む場合<ESC> G oは、キャリッジリターンを実行し、次の行(ファイルの最後)で挿入モードにします。これにより、キーストロークがさらに節約されます。
broc.seib 2017年

1
また、挿入モードに切り替えたくない場合は、を使用してくださいG$
BladeMight 2008

498

これはより速いです。これを使うだけ

:$

16
これは最後の列に移動するのではなく、最後の行に移動するだけです
Rajeshwar

6
ファイルの終わりにすばやく移動したいだけで、キーボードショートカットがめちゃくちゃになっている場合は、これが正しいコマンドです。ありがとう!
joemar.ct 2014年

9
:$ + Endはその場合それをします。
Karthik 2015

1
これには、最後に<ENTER>が必要であるだけでなく、行の最後に到達する必要があるため、処理が速くなりません。
アレハンドロ

1
:$はトリックをします!質問が尋ねられたときにファイルの最後に行きます!感謝
Sijan Shrestha

130

ヒットEscして押します:Shift+G


3
これは、ファイルの最後ではなく、最終行の先頭に移動します。
ジョーダンが2016

5
これは私にとってはファイルの最後に移動し、簡単なキーバインドでもあります
Jacob

Gは列番号を同じに保ち(可能な場合)、最後の行に移動します。コマンドを実行しているとき、ジェイコブはおそらくラインの最後にあり、ジョーダンは前にいました。
run_the_race

39

手始めに、戻る必要はありません。G$しましょう。そして、あなたは計数によって誤解されている<Esc>aノーマルモードコマンドの長さに。

ただし、必要に応じてCtrl+ を使用できますEnd


8
それはCtrl-END
zmo

End私のキーボードには-Key がありません(それがあなたの意味する場合)。

実際には、TIMSSのショーによって答えは私にはよくカウントしなかったこと<ESC>a、彼または彼女は交換する方法を知っていたので、Shift+$, aA

1
@最近のほとんどのラップトップキーボードで、専用のホーム/エンドキーがない場合、ホーム/エンドがFnとともに上/下/左/右に配置されます
phuclv

22

質問は「vimでカーソルをファイルの終わりに移動する」だと思いましたか?

ファイルの終わり:Esc+ ファイルの G
始まりEsc+ g(またはggすでにコマンド領域にいる場合)


21

ファイルの最終行に移動する最良の方法は、を使用することGです。これにより、カーソルがファイルの最後の行に移動します。

行の最後の列に移動する最良の方法は、を使用すること$です。これにより、カーソルが現在の行の最後の列に移動します。

つまりG$、ファイルの最後と最後の行に到達するだけです。

そして、ファイルの最後で挿入モードにしたい場合は、そうするだけですGA。これを行うと、ファイルの最後の行に移動し、最後の列に追加して挿入モードに入ります。:)



11

次の行を書き込む予定の場合ESCGoは、キャリッジリターンを実行し、次の行(ファイルの最後)で挿入モードにして、キーストロークをさらにいくつか保存します。


6
  • Ctrl + Home =ファイルの先頭にジャンプ
  • Ctrl + End =ファイルの終わりにジャンプ

3

これはより速いです:

<ESC>GA

5
特に説明がない場合、なぜ重複した回答を投稿するのAですか?
timss 2013年

3

.vimrcでF3などのキーにマッピングできます。

inoremap <F3> <Esc>GA

2
これは可能ですが、一般的には悪い考えです。代わりに、筋肉の記憶を目指して、GAまたはを使用してくださいG$
timss 2013年

私はまだ1つのキーストロークで勝っています:)より深刻な注意として、vimで何か高速なものが本当に必要な場合は、.vimrcの学習方法が役立ちます。
Tim

また、OPに調べてもらうように指示するのではなく、完全なマップの例を用意しておくとよいでしょう。それが見つからない場合、OPはどのように想定されますか?
FDinoff 2013年

1
故郷から離れなければならないので、あなたは何も「勝ち」ません。さらに、他の人の設定やviで使用することはできません。あなたは本当に時間を節約していません。どちらかといえば、C-endホッブズが述べているように使用します。
timss 2013年

私はここのコメントに同意しますが、私はあなたのためにマッピングをクリーンアップしました
D.ベンノブル

0

カーソルを行末に移動してMac端末で編集する方法を探していましたが、次のように機能しました。編集モードを終了し、g_と入力します(つまり、 'g'を入力し、前にコロンを付けずに下線を付けます)。次に、 'a'キーを押すだけで、スクリプトにコードを「追加」できます。


あなたはおそらく探していましたAか?
D.ベンノーブル

私はAを試しましたが、うまくいきませんでした
Xinyi Xiang

それAは奇妙で、基本的には次のものと同等です$a
D.ベンノーブル

0

別の選択肢:

:call cursor('.',strwidth(getline('.')))

これは、関数を作成している場合に役立ちます。別の状況として、特定のテンプレートを開いて最初の行の最後にジャンプする必要がある場合があります。

vi +"call cursor('.',strwidth(getline(1)))"  notetaking_template.txt

上記は、

vi +"execute ':normal! $'" notetaking_template.txt

以下も参照してください。

vim-現在の行の長さを取得する


0

ファイルタイプの最後にクリップボードの内容を貼り付けたい場合は、次のようにします。

:$ put +

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