プロが教えるわが家の防犯対策術!

エディタのviで、
複数行を選択してコピーして、それを別のところに貼り付けたいのですが、
やり方を教えてください。

nY のあとに Pなどとすれば、n行をコピー&ペーストできる、
というのはわかります。
でも、このやりかたでは、コピーするまえに行数がわかってないといけないと思います。(わたしは行数をいちいち数えている。)

わたしの知りたいのは、n行という行数を指定しなくてもできるやり方です。

たとえば、
Windowsのメモ帳なら、
シフトキー+矢印キーで範囲指定し、Control+Cでコピーし、コピー先の場所に移動し、Control+Vで貼り付けできます。
行数がわからなくても、コピー&ペーストできますよね。
そういうやりかたが知りたいのです。

行番号の表示がない状態でできるやりかたがいいです。(それがデフォルトの状態なので。)

わたしは、端末(PC)でエミュレータを立ち上げて、UNIXマシンに入っているのですが、
エミュレータの機能をつかったりとかマウスをつかったりはしないやり方を教えてください。

A 回答 (4件)

viのコマンドリファレンスを見た限りでは、お探しの機能は見つかりませんでした。


vi以外のエディタを探した方がいいのではないでしょうか?
    • good
    • 0

私はこうやっています。

(ただし、完全な答えにはなっていないし、こんなのあたりまえよと言われそう。もっといい方法があれば私も知りたい。)

1.コピーしたい部分の先頭行(or最後尾行)にカーソル移動。
2.ここでCntrl+G。
3.現在の行番号を覚える。
4.コピーしたい部分の最後尾行(or先頭行)にカーソル移動。
5.覚えたのが52行目だとしたら、y52Gでコピー完了。
6.あとはpでペーストです。
    • good
    • 0

1)範囲の開始位置をma等と入力しマークを置く


2)範囲終了位置まで移動
3) :を入力しコマンドモードに移行
4)'a,.y 等とする
5) ペーストしたい先に移動し p と入力する。

等とするのではダメでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考になります。

お礼日時:2001/08/10 07:28

No.3 の方の回答が、どの vi でも通用するやり方です。


行単位ではなくなりますが、3)~4)のところを : を押してコマンドモードに
移らずとも、コピー範囲の終了地点にカーソルを移動して y'a と打っても
OK です。

# 行単位ではなくなりますが

後、どの vi でも通用するやり方ではないのですが、vi クローンのうちのひとつ
で、vim というのを使うと、やや直感的になります。

V を押すと、行単位の範囲選択モードに入り、Windows に近い、選択範囲を
目で確認しつつ、複写することができます。

複写開始行にカーソルを移動して V 、選択範囲が反転表示されるので、終了行に
カーソルを移動して Y 。複写先の行に移動して、p or P で複写。

伝統的な vi の使い方を理解しつつ、便利な vi クローンを使えれば、使う
というのが良いのではないでしょうか?

# emacs 系に流れる、というのもひとつの選択肢かも (^^;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!