vim 03

ヤンクする

前回までのレッスンでvimには3つのモードがあることを知りました。vimの操作に慣れるには、モードを意識することがとても大事です。

そして「迷ったらEsc」 も大事なことなので覚えておきましょう!。使い始めの頃は操作に迷うことが多いでしょうから、Escはとっても重要なキーです。

さて、今回はvimでヤンク(Yank)してみます。

ヤンク・・・・・??。またまた耳慣れない単語が出てきましたが、vim ではコピーのことをヤンク。って言います。

コピーは前回もExコマンドでやったばかりですけど、ヤンクはレジスタ(registers)という記憶領域を利用する点で、前回やった単純なコピーとは異なっています。

レジスタは通りのいい言葉でいうと、クリップボードのことです。

では、練習用のファイルfile_001.txtを開いて早速ヤンクしてみましょう。

file_001.txt は今、こんな感じになってると思います。

photo.1

行単位でヤンク

まずはシンプルにカーソルのある現在行をヤンクします。

使うキーはヤンク(yank)の頭文字のyです。現在行をヤンクするにはyyとします。

ヤンクしたら次はペーストしたいところですが・・・・。

その前にレジスタの中をみてみましょう。ちゃんとヤンクできてるかチェックしてみます。

レジスタの中身を確認するにはコマンドラインモードに切り替えてから、regと入力します。

いちいち”切り換える”なんて書くと、面倒くさそうに感じますが、キー操作は至ってシンプル。

:reg とすればいいだけです。

ちなみにregはregistersの略です。

さっそく覗いてみましょう。

photo.2

さて、ここでまた面倒くさそうなワードが出てきました。

:reg の内容もphoto.2 の下にズラッと出力されて、不安になっちゃった?かもしれません(笑)。

ヤンクした文字列の格納先はご覧のようにたくさんあって、今チェックした" と0番の他にも1番〜9番。

a〜zなどが存在してそれぞれ役割(機能)が異なっています。

でもまぁ。なんでもそうだと思いますが、最初からすべてを厳密に覚える必要なんてナイですから。

とりあえず今は、ヤンクした内容をvimはレジスタに覚えていてくれる。それもたくさん覚えていてくれる。

たくさん覚えたら忘れないように付箋を貼るみたいにマークをつけてくれるンだなぁ。

くらいでイイと思います。

付箋、マークみたいなものが、photo.2 の " と0番です。

直前にヤンクした内容が " と0番に記憶されるのです。

さて、ここで疑問が生じたと思います。なぜ?わざわざ2箇所に記憶する必要があるのか?

っていうことです。

レジスタに入れるまでがヤンク

冒頭でvimにおいて「コピーはヤンク」と言う。って書きましたが、それは厳密にいうと間違った表現かもしれません。

なぜなら、Delete(削除)した内容もvimはレジスタに覚えていて、必要なときにレジスタから取り出して再利用できるからです。

レジスタの存在を知らないままにvimを使い始めると、たいていのヒトはDelete(削除)したはずの内容がどうして意図せず復活してペーストされるのか???って悩んだりします。

そんなところに違和感を感じたり、直感的じゃないといって使うのを辞めてしまうヒトもいたりします。

が。

copyだろうがdeleteだろうがvimはヤンクしてレジスタに引っ張り込む。って思えばよいのです。

いわゆるコピペという言葉が広く流布してますから、コピーとペーストが一組になっているイメージが強いですよね?

でもvimではまずヤンクです。ヤンクがあってレジスタがあって、それからペースト。っていう感じです。

なので、もうちょっとヤンクしてみます。

Delete でヤンク

Delete してもレジスタに格納されるのをチェックしてみましょう。

現在行をDelete するにはdd とします。

ちなみに前回 yy で現在行をヤンクしましたが、2yy とか 3yy とすれば2行分、3行分とヤンクできます。100yy なら100行をレジスタに格納します。

せっかくなので先頭から3行分削除してみます。キー操作は3dd です。

コピーしようと思ってヤンクした場合と違って、3行が即座にDelete されましたよね?

じゃ、次は:reg でレジスタをチェックです。

photo.3 Delete 後のレジスタ

「あいうえお^Jかきくけこ^Jさしすせそ^J」の3行分がレジスタの " と1番に格納されています。

^J はどうやら改行のようです。

レジスタの0〜9番は、「番号付きレジスタ」なんて呼ばれています。

が。

細かい話です。

削除した内容が操作された順に履歴となって残っていて、過去に遡って復活させたりできます。

レジスタから呼び出してペースト

さてさて、ようやくペーストです。

レジスタに格納された文字列を呼び出してペーストしてみましょう!。

レジスタの中身は今、photo.3 のようになってるハズです。

では、最初にコピーしようと思ってヤンクした0番から「あいうえお」を呼び出してペーストしてみます。

レジスタから0番を呼び出すには、まず、呼び出すぞ!というサインをvimに知らせます。

そのキー操作は、ノーマルモードで " をまず叩いて、次に呼び出したい番号の0を叩きます。

そしてペーストの頭文字 p を入力すると貼り付けられます。

レジスタの0番をペースト
photo.4

どうです?できましたか?

ペーストのpは小文字だとカーソル位置の次に貼り付けられます。この場合だとカーソル位置の下になります。

もし、カーソル位置にペーストしたかったら、大文字のP で貼り付けられます。

p と P は貼り付ける位置が違いますので、便利に使い分けてください。

さて、これまでは行単位でヤンクしてペーストしてきました。

前回のExコマンドによるコピペも行単位でしたね。

次回は、文字単位(単語単位)で切ったり貼ったりしてみましょう。