読者です 読者をやめる 読者になる 読者になる

Vim User Manual読む usr_01-03

いままでも何度か挑戦してきたけど、読む先から忘れていって悲しいので記録をとりながら読む。分からなかった英文、英単語もついでに書いていく。登場したコマンドはすべて書いていく。覚え方みたいなものがあればそれも書く。

usr_01.txt

CTRL-]

ヘルプ中で、カーソル下の項目にジャンプ。

CTRL-O

ジャンプした後に、元の場所に戻る。help読んでてどういうわけか訳の分からないところにジャンプしたときに便利。(Older cursor position)

Vim Installed

香り屋さん版なので読み飛ばす

This material may be distributed only subject to the terms and conditions set forth in the Open Publication License.

set forth:説明する

usr_02.txt

In either case,

"cases"とかにならないのね。eitherは不定冠詞相当語なるものらしく、この場合冠詞をつける必要はないらしい。

Either book will do. (どちらの本でもよい)

In other words, when Vim runs out of file to display.

"runs out of..."と読んで、「ファイルを使い果たす。はて。」などと思ったので。ファイルを読んでいって一番下まで来るさまが"run out of..."らしい。「[品物を]切らす、ネタ切れになる」や「[容器に入っている水が]流れ出る」あたりが近いか

i

ノーマルモードからインサートモードへ。(Insert)

programmer's limeric

A very intelligent turtle
Found programming UNIX a hurdle

ぐぐると、http://www.indigo.org/humor/unixhumor.htmlに、

A very intelligent turtle
Found programming UNIX a hurdle
The system, you see,
Ran as slow as did he,
And that's not saying much for the turtle.

とある。なんか創世記っぽいが、元ネタ不明。turtleが何の洒落なのかよく分からないし日本語訳も見当たらない。「UNIX ジョーク 亀」あたりで調べてると「亀レス」という言葉が目に入り、動作がとろいと言いたいのかとようやっと気づく。であれば、

とても賢い亀が
UNIXはハードルであると気づいた。
システム、見てのとおり、
彼が走るように遅い。
そして、そんなことはその亀にとって当たり前であった。

か?なんか面白くない。何か分かっていないのだろう。
That's not saying much.:「そんなことは当然だろう」

Q_in

ヘルプのQ_inにテキスト変更のコマンドのリストがあるらしい。(Quickreference INsert)

:set showmode

現在のモードを見えるようにする。

Esc

インサートモードからノーマルモードへ。ノーマルモードにいるときにEscを押すとビープがなるらしい。困ったときはビープがなるまでEsc連打し、ノーマルモードへ戻る。

For Japanese users, Hiroshi Iwatani suggested using this:

hjklの覚え方。

For Japanese users, Hiroshi Iwatani suggested using this:

			Komsomolsk
			    ^
			    |
	   Huan Ho	<--- --->  Los Angeles
	(Yellow river)	    |
			    v
			  Java (the island, not the programming language)

Komsomolsk:コムソモーリスク
つづりの雰囲気で北の方だと分かるといえば分かるけど。"Huan Ho"はお手上げです><

x

カーソル上の文字を削除。(タイプライター時代に訂正箇所をxで上書きしていたらしい)

dd

一行削除。(Delete)

J

行の連結。(Join)

n行目で実行するとその行の改行記号を削除し、n行目の最後に(n+1)行目が連結される。

u

アンドゥ。(Undo)

CTRL-R

リドゥ。(Redo)

U

一行の変更全体に対してアンドゥ。これそのものが変更扱いなので、Uしたあとにuすると、Uする前の状態に戻り、さらにCTRL-RするとUした後の状態に戻る。a bit confusing.

a

カーソルの右側でインサートモードに入る。(Append)

o

カーソルのある行の下に空の行を作る。(Opening up a new line)

O

カーソルのある行の上に空の行を作る。

カウント

多くのコマンドは頭に数字をつけることで繰り返せる。"a!!!"が"3a!"でいいのはなんか不思議。

ZZ

保存して終了。

:q!

変更を破棄して終了。(Quit-and-throw-things-away)

:e!

変更を破棄して読み見直し。!はoverride command modifierと言うらしい。

:help

ヘルプ。F1でもいいらしい。ZZで脱出。このときVimは終了しない。

:help

一般ヘルプ。後ろにいろいろつけることができる。

:help {コマンド}

そのコマンドについてのヘルプ

:help {したいこと}

:help deleting

:help index

コマンドの完全な目録

:help {キー}

そのキーのコマンドについて。特殊キーについてはのようにする。

:help CTRL-A

どのモードでの挙動かを明示したいときには、モードの接頭辞をつける。接頭辞のリストは"help-context"でhelp。

:help i_CTRL-H

:help {コマンドライン引数}

:help -t

:help '{オプション}'

オプションについて調べたいときはシングルクォーテーションで囲む。

:help E{エラー番号}

E37: No write since last change (use ! to override) ~

のように出たとき、エラー番号のエラーについて調べる。

CTRL-T

タグ(バーで囲まれたやつ)をさかのぼって戻る。CTRL-]の逆。CTRL-Oは「元の場所に戻る」らしい。

ヘルプのまとめ

Summaryがついてたorz

usr_03.txt

Q_lr

helpのQ_lrにカーソル移動のコマンドのリストがあるらしい。(Quickreference Left-Right motions)

w

1単語後方の語頭に移動。(Word)

b

1単語前方の語頭に移動。(Backward)

e

1単語後方の語尾に移動。(End of word)

ge

1単語前方の語尾に移動。(gは何?)

'iskeyword'

'iskeyword'オプションで、単語の定義を変えられる。

WORDs

空白で区切られたひとまとまりのことをWORDと呼ぶらしい。

W

1WORD後方の先頭に移動。

B

1WORD前方の先頭に移動。

E

1WORD後方の末尾に移動。

gE

1WORD前方の末尾に移動。

$

行末に移動。Endキーと等価。"$"をたくさん繰り返しても意味はないが、"2$"にすると、一度行末に行った後、次の行末に行く。つまり、"n$"で、(n-1)行下の行末に移動する。

^

行の空白でない文字の中で先頭のものに移動。カウントをつけても意味はない。

0

行頭に移動。Homeキーと等価。0そのものが数なのでカウントがつかない。

f{1文字}

後方のその文字に移動。(Find)

F{1文字}

前方のその文字に移動。

t{1文字}

後方のその文字の1文字手前に移動。(To)

T{1文字}

前方のその文字の1文字後に移動。何に使うんだろう…

;

先に行われたf,F,t,Tを繰り返す。

,

先に行われたf,F,t,Tを逆方向に繰り返す。

only to

そんなのあったなぁ。

Sometimes you will start a search, only to realize that you have typed the wrong command.

Esc

f,F,t,Tまで押しちゃって、中止したいときに押せば何も起こらない。

%

対応する括弧に移動。()、[]、{}に対応。もし、カーソルが括弧の上にないなら、後方の括弧を検索しそこに移動する。括弧は、'matchpairs'オプションで設定できる。

G

カウントをつけると、そのカウントの値の行に移動。例えば、33Gで33行目に移動。カウントをつけないと、ファイルの終わりに移動。(Goto)

:make

コンパイラのエラーに対応してファイルを編集するためには":make"を使えばいいらしく、usr_30.txtを見ればいいらしい。

gg

ファイルのはじめに移動。"1G"と等価。

{カウント}%

ファイルの{カウント}%の点に移動。

H

画面内の最初の行の先頭に移動。(Home)

M

画面内の真ん中の行の先頭に移動。(Middle)

L

画面内の最後の行の先頭に移動。(Last)

CTRL-G

'ruler'オプションがオフなら、現在位置を表示。

'number'

オンなら、行番号を表示。

:set number
:set nonumber

ブールオプションは、noを名前につけるとオフに出来る。

'ruler'

カーソルの位置を右下に表示。

CTRL-U

スクリーンの半分だけ前方にスクロール。(Upwards 巻物を枠越しに見て、巻物を上に持ち上げるのではなく、枠を上に持ち上げる感じか)

CTRL-D

スクリーンの半分だけ後方にスクロール。(Downwards)

scroll down

The CTRL-U command scrolls down half a screen of text.

普通に、「ファイルの先へ進むこと」ブラウザで言うならスクロールバーを下方にやることなのかと思ったのだが、どう考えてもCTRL-Uで実行されるのはファイルの先頭方向に進むこと、スクロールバーを上方にやることなので、大変不思議に思った。

CTRL-E

一行後方にスクロール。(Extra line)

CTRL-Y

一行前方にスクロール。(由来不明。yから始まる単語で最初に思いついたのが"yield"なのだが、"I can't yield an inch."「もう一歩も後に引けない。」というのがあるらしいのでそう思っておくことにする。)

CTRL-F

2行残して後方に一画面スクロール。(多分Forward)気になって調べてみたら、EmacsのCTRL-Fはカーソルを右に移動でforwardらしい。

CTRL-B

2行残して前方に一画面スクロール。(多分Backward)

zz

現在カーソルのある行が画面の中心になるようにスクロール。

zt

現在カーソルのある行が画面の一番上になるようにスクロール。(Top)

zb

現在カーソルのある行が画面の一番下になるようにスクロール。(Bottom)

Q_sc

helpのQ_scにスクロールのコマンドの一覧があるらしい。(Quickreference SCroll)

'scrolloff'

カーソル上下の数行が常に画面に残るように出来る。

/

前方に検索。/を押した後検索文字列を入れてEnter。検索文字列の修正は左右キーとBackspaceで。(一貫性ないなー。)「.*[]^%/\?~$」は特殊な意味があるので、「\」でエスケープする必要がある。カウントはつかない。

n

最後に行った検索をもう一度行う。(多分Next)カウントが使える。

?

後方に検索。/の後方版。?の後にnを使うとどんどん前方に遡っていく。

N

最後に行った検索を逆方向に行う。/の後にNを使うとどんどん前方に遡っていき、nを使うとどんどん後方に進んでいく。

'ignorecase'

検索時に大文字小文字を無視する。

検索履歴

/を入力した時点で、上下キーを押すと検索履歴をたどって、以前にやった検索ワードを出してくれる。途中までワードを入力して上下キーを押すと、そこから始まる検索ワードを出してくれる。:コマンドでも同様。/と:の履歴は独立している。

*

カーソル下の単語を後方に検索。カウントがつく。

#

カーソル下の単語を前方に検索。カウントがつく。

検索単語の区切り指定

"\>"は単語の終わりにマッチ。"\<"は単語の始まりにマッチ。

/\<the\>

は"the"のみにマッチし、"there"や"soothe"にはマッチしない。*や#による検索では自動で単語の始めや終わりにこだわって検索してくれる。もし、そこにこだわらないで検索させたければ("the"にカーソルを合わせて"there"や"soothe"にマッチさせたければ)、"g*"や"g#"を用いる。

whole, partial

"whole"「全体の」、"partial"「部分的な」ぐらいの認識でいたのだけれど、

Notice that the "*" and "#" commands use these start-of-word and end-of-word markers to only find whole words (you can use "g*" and "g#" to match partial words).

をこの訳で逐語訳すると

"*"コマンドと"#"コマンドは、全体の単語だけを検索するために、語頭マーカーと語尾マーカーを自動的に使用します。(部分的な単語にマッチさせるには"g*"コマンドや"g#"コマンドを使用しましょう。)

なんか意味が分からない。多分、"there"や"soothe"の中に生じた"the"に注目することが普段ないから変な感じがするのだと思う。"partial word"でぐぐってみたらちょうどそんな感じの用法が出てきたので、"partial word"は「部分的に生じた」ぐらいがいいのかなとか。"whole word"は明らかにその反対だから、「単語そのもの」ぐらいにするといいのかなー。

"*"コマンドと"#"コマンドは、単語そのものだけを検索するために、語頭マーカーと語尾マーカーを自動的に付加します。(部分的に生じた単語にマッチさせるには"g*"コマンドや"g#"コマンドを使用しましょう。)

こんな感じ?

'hlsearch',":nohlsearch"

'hlsearch'オプションをオンにすると、検索語がハイライトされる。ハイライトを消そうと思って"set nohlsearch"とすると、以降検索してもハイライトされなくなってしまう。今の検索後のハイライトを消したいが、今後検索するときはまたハイライトしてほしいときは":nohlsearch"という:コマンドを実行する。

'incsearch'

検索語を入力している間に、その入力中の語と一致する箇所を表示する。そして、Enterキーを押すと、表示されている箇所にジャンプする。

'wrapscan'

デフォルトでオン。検索をファイルの終わりや始まりで終了せず、ループさせる。カーソル位置からファイル末尾までというだけでなく、ファイル全体を包むように対象にすることになるあたりが"wrap"?

intermezzo

intermezzo:間奏曲

":scriptnames"

起動時に読み込まれるVimスタートアップファイルの場所を表示する。そこにVimコマンドを書いておくと起動時に実行してくれる。

:set hlsearch<Esc>

とあるので、行頭に:は書くのか。(書かないのをよく見る気がするので、どちらでもいいのかも。)

specify

(正規表現は強力だ云々)
Unfortunately, this power comes at a price, because regular expressions are a bit tricky to specify.

specify:明確に述べる

正規表現

正規表現の完全な説明はhelpの"pattern"に書いてある。

^は行頭にマッチする

"^include"は行頭の"include"のみにマッチする。

$は行末にマッチする

"was$"は"was"が行末にあるときのみマッチする。"/^the$"と検索すると一行に"the"しか書いてないときにマッチする。空白が入っているとマッチしなくなることに注意。

.はどんな文字にもマッチする

We use a computer that became the cummin winter.

で、"c.m"は、"computer"の"com"、"became"の"cam"、"cummin"の"cum"にマッチする。

もしも、.そのものをマッチさせたいときはバックスラッシュでエスケープする。"ter\."で検索すると、"winter."の"ter."にのみマッチする。

マーク

ジャンプする前の位置のことらしい。

``

ジャンプする前の位置に戻る。たくさんやると二点間を往復することになる。@キーのところにある"`"のことは「バックチック」とか「オープンシングルクオート」と呼ぶらしい。へー。

ジャンプ

Generally, every time you do a command that can move the cursor further than within the same line, this is called a jump. This includes the search commands "/" and "n" (it doesn't matter how far away the match is). But not the character searches with "fx" and "tx" or the word movements "w" and "e".

Also, "j" and "k" are not considered to be a jump. Even when you use a
count to make them move the cursor quite a long way away.

どういうことなの…

CTRL-I, Tab

CTRL-Oの逆。Tabでも同じ。(IはOの隣)

":jumps"

ジャンプする場所のリストを表示する。最後に使ったエントリの位置(?)は">"で表示される。

ジャンプまとめ
	     |	example text   ^	     |
	33G  |	example text   |  CTRL-O     | CTRL-I
	     |	example text   |	     |
	     V	line 33 text   ^	     V
	     |	example text   |	     |
       /^The |	example text   |  CTRL-O     | CTRL-I
	     V	There you are  |	     V
		example text

分かりやすい

m{マーク名}

名前つきマーク(ブックマーク)をカーソル下に作る。(Markか)マーク名はa-zの26文字から選べる。

`{マーク名}

そのマーク名のマークにジャンプする。

'{マーク名}

そのマーク名のマークの行頭にジャンプする。

''

元いた場所へジャンプ。多分行頭。

":marks"

マークのリストを表示。

特殊なマーク

'

ジャンプをする前のカーソル位置

"

編集した最後の位置

[

最後の編集の始まり

]

最後の編集の終わり