Vimで行末に移動するにはどうすればよいですか?


1194

コマンドモードで、特に行にジャンプするなど、一般的に移動する方法を知っています。しかし、現在使用している行の最後にジャンプするコマンドは何ですか?


19
10分未満でカバーされる基本的なvimコマンドyoutube.com/watch?v=71YTkxUNwmg
eomeroff 2014年

14
vimtutorを数分実行することの何が問題になっていますか?これはすでにVimインストールの一部であり、基本を示しています。
ダッシュトムバン

@ dash-tom-bangええと、彼らはここで非常に高いスコアを獲得しました... :)はい、そうです、あなたは正しいvimtutorです。おそらく彼らはそれを知らなかったのでしょうか?
プリフタン

回答:


2051

ただ、$ (ドル記号)キーを押します。を使用Aして行の最後に移動し、編集モード(追加)に切り替えることができます。空白以外の最後の文字をジャンプするには、g次に_キーを押します。

余談ですが、その反対AI(行の先頭に挿入モード)です。だけを押すと^、カーソルが行の最初の空白以外の文字に置かれます。


81
最後の空白以外にジャンプg_
SergioAraujo 2012年

2
g_バリエーションには空白文字が含まれていないため、バリエーションの方が便利な場合があります
rogercampos

6
_gバリアントは、ビジュアルモードで作業するときに本当に役立ちます。これにより、末尾に改行なしで行を使用できるようになります。
グレッグロビンス

2
HomeキーとEndキーは通常のキーボードで機能しますが、ラップトップを使用している場合は$および^が必要です:)
Sridhar Sarnobat

リストに^を追加する必要があります。
Tek 2013

304

多くの人が言ったように:

  • $ 行の終わりにあなたを連れて行きます

だけでなく:

  • ^または_、行の最初の空白以外の文字に移動します。
  • 0(ゼロ)行を含む行の先頭に移動します。空白

私は知っていた| 行の先頭に移動しますが、0を認識していませんでした。したがって、0と|の両方が まったく同じことをしますね
Kamran Bigdely

8
@kami:説明は異なりますが、同じように動作するように見えます。ただし、パイプ|コマンドはカウントを取得できます(例:3 |)。3列目にジャンプします。
ポール・ルアン

136
  • $ 行の最後の文字に移動します。
  • g _ 空白以外の最後の文字に移動します。

  • g $ 画面行の終わりに移動します(バッファー行が複数の画面行にまたがっている場合)


g_は$ bと同じだと感じています
Dave Aaron Smith

3
@DaveAaronSmith:bまったく同じではない前の単語の先頭に移動します。ほぼと同等$geです。
ポールルアン

9
改行(LN)文字もコピー/削除するので、私はビジュアル_g_ヤンキングにand を使用してい$ます。
アーネスト

私にとって、$は現在の画面行の最後に移動します(折り返された場合)。その理由を理解することができませんでした。g_行の最後に到達するために私が見つけた唯一の方法です。
ezuk

@ezuk $は、私のためにラップされた場合でも、行の終わりに行きます。私はその行動を調整する設定がないことを知っています。たぶんそれはあなたの.vimrcによってg$
Paul Ruane、2015年

66

主な質問-行末

$ 行末に移動し、コマンドモードのまま

A 行末に移動し、挿入モードに切り替えます

逆に- 行頭(技術的には最初の非空白文字)

^ 行頭に移動し、コマンドモードのまま

I (大文字のi)行頭に移動し、挿入モードに切り替えます

さらに- 行頭(技術的には空白に関係なく最初の列)

0 (ゼロ)行頭に移動し、コマンドモードのまま

0i (ゼロの後に小文字のiが続く)行の先頭に移動し、挿入モードに切り替えます

viの学習を始めた人のために、ここでは、viの典型的なWindows GUIエディターのカーソルの動きとショートカットキーにviコマンドを並べて一覧表示することにより、viの概要を紹介します。

Windowsユーザー向けのviエディター


3
アナログはIないです0けど^、両方とIして^最初に行くの非空白の行の文字が、0(その名前が示すように)列ゼロになります。
wchargin

@wchargin真、私はの類似物が何であるかを見つけることができないように思われました0か?(行の最初の文字(=列0)に移動し、挿入モードに移動します)
franssu

@franssu:私が知っているのはだけです0i。:-)
wchargin 2017

@wchargin-技術的な正確さをありがとう。投稿を更新しました。
ap-osd 2017

42

現在の行が表示画面を次の行に折り返す場合、g $を使用して画面行の終わりに到達できます。


3
upコマンドとdownコマンドの前にgを付けると、vimがカーソルを行ベースではなく画面ベースで移動させることがわかりました。すなわちGJGKは、あなたが長いラインで上下に移動することができます。本当に便利です。
Druckles、2012

1
また、gwと何かを入力すると、jkが永続的にこのように動作するように変化するようです。方法や理由がわかりません。誰かがこれを説明できますか?
Druckles、2012

4
@Druckles:少し返信が遅くなりますが、それでも疑問に思っている場合(または他の誰かがこれを読んでいる場合)gwgqテキストを再フォーマットするコマンドです。(:h gwおよびを参照:h gqgw{motion}画面の行が実際の行に対応するようにテキストを変更しました。
pandubear 2013


13

多くの場合、文字列内にいるときは二重引用符で囲まれています。またはステートメントを書いているときに、エスケープを押して矢印キーでその行の終わりに行き、セミコロン(;)を押して終わりにしたくないこの線。vimrcファイル内に次の行を記述します。

imap <C-l> <Esc>$a

行は何と言いますか?Ctrl + lを一連のコマンドにマッピングします。これはEsc、(コマンドモード)、$(行末)、a(追加)を同時に押すのと同じです。


それをありがとう。最初のマシンのように行末に移動するときにCtrl-eをvimに追加したかったのですが、方法が
わかりませんでした

1
受け入れられた答えが言うように、あなたは同じことをするためにAを押すことができます。
トリシス

4
@trysisあなたは誤解しました、これは非常に素晴らしい編集モードから離れません。
Marconi

2
あなたが正しい。vim確かに、このようなことで、はるかに少ない時間で多くのことができるようになります。@razorxpress、マイナー調整はになりますimap <C-l> <Esc>A。これにより、Ctrl + lはEsc(終了挿入モード)、次にA(行末に追加)を押すのと同じになります。
トリシス

3
これをより慣用的にマッピングする方法は次のようになると思いますinoremap <C-l> <C-o>A
ベニーティー

12

「End」キーの利点は、通常モードと挿入モードの両方で機能することです。

'$'は通常/コマンドモードでのみ機能しますが、クラシックviエディターでも機能します(vimが使用できない場合に知っておくと便利です)。


38
何のために挿入モードにぶら下がっていますか?普通のきちんとした市民は日光の後にそこに行きません。何が起こっているのか知っていますか?コードはそこに消えますね。それは消えて、二度と聞かれない。
ルーク

3
入力後は挿入モードのままにしておきたいので、ありがとうございます。残念ながら、私のラップトップにはEndキーがありません。:(
光線

12

また、line(または物理行)とscreen lineの違いにも注意してください。行は行末文字( "\ n")で終了します。画面の行とは、端末または画面に1行の文字として表示されるものです。画面幅よりも物理的な線が長い場合、2つはばらばらになります。これは、電子メールなどを書くときに非常に一般的です。

この違いは、行末コマンドにも表示されます。

  • $そして0、それぞれの端または物理回線または段落の先頭に移動:
  • g$そしてg0、それぞれ、スクリーン行または段落の末尾または先頭に移動します。

常に後者の動作を好む場合は、次のようにキーを再マップできます。

:noremap 0 g0
:noremap $ g$

1
行の最後の空白以外に到達する方法は?(スクリーン線か物理線か)
Kamran Bigdely

g_物理的な行の最後の非空白文字です。スクリーンラインはどうですか?
トリシス


9

または、明らかな答えがあります。Endキーを使用して行の最後に移動します。


1
ええ、Macターミナルはキーをハイジャックし、ターミナル内で実行されているものにそれらを渡さないことに気づきました。Macを少し使うたびに私を困らせるものの1つ。
davr 2011

vimを使用する全体のポイントは、「End」のようなキーを使用する必要がないことです。家の列を離れることはありません。
Jon Thoroddsen、2015年

7
MacではEndキーはありません。
kenorb

1
@kenorb私がコメントを投稿したときはありましたが、Appleは長年にわたって機能を削除することを好みます。netdna.webdesignerdepot.com/uploads/2009/01/…これは、実は私のお気に入りのキーボードの1つです
davr

9

標準端末でvimを使用するためのmacbookのホットキーが表示されません。それが誰かを助けることを願っています。macOSユーザー向け(macbook pro 2018でテスト済み):

fn+ -開始行に移動

fn+ -最終行に移動

fn+ -ページを上に移動

fn+ -ページを下に移動

fn+ g -カーソルをドキュメントの先頭に移動します

fn+ shift + g -カーソルをドキュメントの最後に移動します

最後の2つのコマンドでは、2回タップする必要がある場合があります。


6

おそらく無関係ですが、現在の行の後に新しい行を開始する場合は、行の任意の場所でoを使用できます。


3

最も簡単なオプションは、キー入力すること$です。テキストのブロックで作業している場合は、コマンド{を評価}したり、段落を前後に移動したりできます。


2

私はHome / Endに慣れていましたが、Macがサポートしていない挿入モード(Windowsでの使用からLinuxでの使用)で行の先頭と末尾に移動しました。リモートシステムでvimを使用しているときも、簡単に実行できないため、これは特に厄介です。辛い試行錯誤を繰り返した後.vimrc、同じことを行うこれらの行を思いつきましたが、行の先頭をCtrl-Aに、行の終わりをCtrl-Dにバインドしました。(なんらかの理由で、Ctrl-Eは予約されているか、少なくともバインドする方法がわからなかったようです。)楽しんでください。

:imap <Char-1> <Char-15>:normal 0<Char-13>
:imap <Char-4> <Char-15>:normal $<Char-13>

ここにも、他の人のためのASCII制御文字コードの適切なチャートがあります。

http://www.physics.udel.edu/~watson/scen103/ascii.html

Ctrl-V + Ctrl-も使用できますが、このような場所には貼り付けられません。

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