-->
./
<!-- フラ&#65533;ュが見れな&#65533;のためにここに何か書&#65533; --> フラ&#65533;ュがインス&#65533;&#65533;ルされて&#65533;&#65533;たいで&#65533;&#65533;&#65533;

2010年03月20日

[vim]名前つきバッファと履歴バッファ、マークとの違い

名前つきバッファと履歴バッファ
JVimには文字列を入れておく「領域」がいくつかあって,一時的に任意の テキストを記憶させたり書き出したりできます
MacやWindowsの操作を知っている人なら「クリップボード」のようなものと 思って下さい

この特殊な「領域」は「バッファ」などと呼ばれ,JVimにはいろいろな種類の バッファを使い分けて活用できるのです
バッファには,どんな種類があって,どのように使うと便利なのかを解説します

 どうもEmacsでいうところのレジスタを、viではバッファと呼んでいるみたいです。バッファはEmacsで、メモリに読み込まれた編集対象の作業領域(多くはファイルそのもの)のことですから、明らかに言葉の意味が違っているように感じました。
 このviのレジスタ(ここではバッファ)は、これまでにちょこちょこ使いましたが、すぐに使わなくなり、そのたびに調べなおしたりしていました。昨夜初めて”(二重引用符)が使えると知ったのですが、以前見かけた記事はすべて`(バッククオート)を使っていたと思います。`(バッククオート)はあまり使わない記号ですが、UNIXでは、`(バッククオート)で囲まれた文字列をコマンドとして実行できる、危険性も併せ持ったような記号だったので、なんとなく使う気がしなかったということもありました。
 ・・・と、ここで気がついたのですが、`(バッククオート)を使うのはマークを使った範囲選択でした。レジスタ番号のようなものを使うという点では、名前付きバッファと似ていますが、よく考えると異なる操作になりそうです。

 マークを使う場合は、たとえばコマンドモードで「mj」と打ちます。するとカーソル位置にjというマークが設定されます。そのあとカーソルを移動して、「y`j」と打つとjというマークを設定した位置から、現在のカーソル位置の直前の文字列が、コピーされますので、所望の位置にいどうしてから、「p」を打つと、コピーした範囲が貼り付けられます。
 ためしてみたところ、「"jp」で貼り付けることはできず、「レジスタjには何もありません」とメッセージが出ました。しかし、「`j」で、マーク位置に移動することはできました。マークと名前付きバッファは、同じくアルファベット人文字で、印を付けますが、扱いが異なるようです。

 参考にさせていただいたページで、特に便利だと思ったのは大文字を使ったバッファへの追加です。「"ayy」「"Ayy」「"Ayy」と繰り返していくと、各行を名前付きバッファaに追加でき、「"ap」でまとめて貼り付けることができました。

 あとHというコマンドの存在も知りました。「”ay3H」で画面に表示されている3行目からカーソル位置までの範囲が名前付きバッファaに記憶されました。このHは、移動系のコマンドみたいです。Hとだけ打つと、画面に見えている範囲の先頭に移動し、3Hと打つと、同じく3行目に移動しました。



 :di でバッファの状態を確認することができるので、これはすごく便利です。


追記:
 どうも「:put a」という方法でも貼り付けることができるようで、わずかな違いですが、「:pu j」と省略することもできるみたいです。
参考:http://homepage1.nifty.com/niwatori/vi/t08.html#kiroku


Powered by ScribeFire.



posted by hirono at 16:41| Comment(0) | TrackBack(0) | Vim
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/36536444

この記事へのトラックバック