• ベストアンサー

vi(vim)について(exラインにコピーとgdbについて)

よろしくお願いします。 vi(vim)もしくはgvimについて、2件の質問があります。 (1)exコマンドにコピーをする方法を教えてほしい 長い関数があって(例:hogehogehoge)、この関数を検索などをするとき /hogehogehoge としますが、関数名が長い場合など、バッファのコピーを張り付けたいのです。 gvimだと:ptagなどで使いたいです。 (2)vi(gvim)でグラフィカルにgdbデバッガを使いたい インターネットで検索すると、複数のウィンドウでgdbをする例などもありますが、うまくいきませんでした。 helpを見てもよくわかりませんでした。 正しいやり方を探しています。 (vimはemacsのように「環境」になりつつあるイメージです) 一番やりたいことは、vim上でステップ実行です。 お世話になりますが、よろしくお願いいたします。 #環境 linux Fedora core 8 vim version 7.1.242 #vimのおもな使用目的 プログラミング #emacsは挫折しました 俗に言うemacs小指になってしまったので,vimに朝鮮しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

(1) Ctrl-R の後に名前付きバッファ(僕はレジスタと読んでましたが多分一緒だと思います・・・) を指定することで、バッファの内容を挿入できます。 ちなみにクリップボードの内容はレジスタ「*」に入ります。 これはコマンドライン(?)の時だけでなく、挿入モード時にも有効です。 (2) vimGdbというのがあるらしいのですが、ちょっと古くてVim7.*では使えなかったと思います。 http://www.google.co.jp/search?q=vimgdb

参考URL:
http://www.google.co.jp/search?q=vimgdb
hoge-tyon
質問者

お礼

取り急ぎ、お礼だけ言わせてください。 (1)について 今、やってみました。 期待することができました。ありがとうございます。 追加で教えて頂いた2件(クリップボードの件、挿入モードでも使える件)についても、やってみました。 おっしゃってるようにできました。 非常に有用で、助かりました。ありがとうございます。 (2)について 初めて知りました。ちょっと試してみようと思いますが、 時間がかかりそうでしたので、 取り急ぎ、上記の(1)の件について、「できた報告」と「お礼」を伝えようと思い投稿しました。 もう少しチャレンジしてみて、報告をさせていただきます。 ありがとうございます。 #(参考)名前付きバッファの由来 名前付きバッファの呼び方は、下記の本で使っていたので、私も使っていました。 (直接リンクを張ってよいのかどうかわからなかったので、書籍情報だけ、貼り付けます) 入門vi 第6版 (単行本) リンダ ラム (著), アーノルド ロビンス (著), Linda Lamb (原著), Arnold Robbins (原著), 福崎 俊博 (翻訳) 出版社: オライリー・ジャパン (2002/05)

hoge-tyon
質問者

補足

ありがとうございます。 (2)の件(vimgdbについて)もできました。 本家のダウンロード先に行ってみると[Vim7.*]にも対応しているバージョンがリリースされていました。 vimgdbのインストールを説明している日本のサイトの内容で、ほぼ問題なくインストールできました (変更点はconfigureを実行するときの引数くらい) おかげで、vim上でステップ実行ができるようになりました。 (かなり快適です) ありがとうございます。 #すみません。 追加で回答へのお礼ボタンが見当たらなかったため、 追加で補足のほうへ書き込ませてもらっています。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.1

(1)についてだけ。 名前付きバッファをご存じでしょうか? a という名前のバッファに /hoehoe という内容を入れておくと、コマンドモードで @a と打つことでそのコマンド(この場合はhoehoeの検索)を実行できます。:%s/foo/bar/g と入れておけば置換も出来ます。 名前付きバッファaへの入れ方は、/hoehoe という1行を作ってその行上にカーソルを置いて、"ayy で入ります。"add と元の行を消しても良いし。 二重引用符+バッファ名+(削除またはヤンクコマンド)です。名前はa以外も使えます。詳しくは検索して下さい。

hoge-tyon
質問者

お礼

早速のご回答、ありがとうございます。 私のお渡しした情報が不完全で申し訳ありません。 結果から申し上げると、私が求めていたものと少し齟齬があります。 (1)名前付きバッファについて 知っています。[@]コマンドはマクロのことをおっしゃていると思います。 名前付きバッファに保存したコマンドを[@a]などで行うものと認識しています この方法だと :ptag hogehoge と /hogehog は別のマクロとして登録しておかなければなりません。 私がしたかったのは、 [hogehogehoge]という関数名をコピー。 この関数を探そうと思って、 /[ここに貼り付け] それでも分からないので :tag [ここにもう一度貼り付け] 別のウィンドウで見たいなと思いなおして :ptag [ここにもう一度貼り付け] のように、関数名をコピーして、exコマンド上で張り付ける方法が知りたかったのです。 #これができれば、置換だって、シェルで何かしようと思ったって便利だと思っています。 せっかく、教えてくださったのに、すみません。 回答、ありがとうございます

関連するQ&A

  • viの使い方について

    viでファイルを跨いでコピーしたいのですが、その時、 ヤンク(?)とか言うviの機能で、名前付きバッファで コピー&ペースとしています。 名前付きバッファは次使うときは上書きされたり、viを 終了するとクリアされると説明されているのですが、 その様に動きません。 コピーした値が追加され残った状態です。また、viを 終了してもクリアされません。 名前付きバッファをクリアしたいのですが、できないのでしょうか。 クリアする方法を教えてください。 環境は、 Linux Red Hat 4.5

  • gdbで無名名前空間の関数にブレイクポイント

    Windows+cygwin+emacsでc++のプログラムを勉強しています。デバッガとしてemacs上でgdbを使っているのですが、無名の名前空間にある関数にブレイクポイントを設定する方法がわかりません。例えば、 namespace {  void foo() {    ...  } } int main(void) {  foo(); } のようなfoo.cppファイルをコンパイルしてfoo.exeファイルを作り、それをgdbによりデバッグするとします。そこで、gdb上で b main とすると、mainに入ったところにブレイクポイントが設定されますが、 b foo としても、Function "foo" not defined.と表示されてブレイクポイントが設定されません。無名の名前空間にある関数にはどのように入力してブレイクポイントを設定するのでしょうか。とりあえず、今は行番号によりブレイクポイントを設定しています。ご存じの方がいらっしゃいましたら、ご教授ください。お願いします。

  • Winのエディタで慣れてしまった人のためのLinuxのエディタは?

    EmEditor(Windows用のエディター)のファンです。最近、訳あってLinuxを使い始めました。また、訳あってエディターはviです。GNOMEというデスクトップ環境が、非常にカワイくて、気に入ってしまい、今後、徐々にLinuxにシフトしていこうと思うのですが、いいエディターはないでしょうか?Windows用のエディターに慣れてしまった私には、emacsもviも、ちょっと難しいです。それとも、Linuxなら、やはりemacsかvimに落ち着いたほうがいいのでしょうか?これらを使用する利点はなんでしょうか?

  • vi操作でクラス、関数、変数を追いかける。

    皆様へ いつも、お世話になっております。 この度は、vi操作についてのご質問です。 ・質問内容 Vi操作にて、変数名や関数名やクラス名がどこで定義されているのかを検索し、 そのファイルを開く一連の動作をすばやく行いたい ・環境 CentOS5.8に対してSSHで接続を行っています。 出来れば、ユニックスコマンドとvi操作で行いたいと考えています。 ・現状 :!find ホームディレクトリ -name ファイル名 -exec grep 関数名 {} \; :tabnew ホームディレクトリ/見つけたファイル名 といったような方法でファイルを開いていますが、 関数名で検索すると莫大な検索量になってしまい、取捨選択が大変です、 またファイルを開くのも一苦労です。 何か良い案は御座いませんか? お願いします。

  • ssh接続でvi(vim)使用時テンキー入力にて文字化け

    タイトルにもありますが以下の条件で使用時に文字化けが起こります。 コンソール画面やsshでのコマンド入力では問題なく、 vi(vim)利用時で、キーボードのテンキー入力で数字のみ文字化けします。 スラッシュやアスタリスクなどの記号は普通に表示されます。 その他は表示に問題ありません。 テンキー入力文字化けについて 1 → 上の段にq 例:「1234」と入力がしてあり、2と3の間にテンキーの「1」を入力すると q 1234 と表示される。 2 → 上の段にr 3 → 上の段にs 4 → 上の段にt 5 → 上の段にu 6 → 上の段にv 7 → 上の段にw 8 → 上の段にx 9 → 上の段にy 0 → 上の段にp 環境 Linux(CentOS5.3) Vim Ver.7.0.237 操作環境 WindowsXP SP3 Putty 0.60-jp20070603 USB日本語109フルキーボード その他必要な情報があればお伝えください。 よろしくお願いします。

  • Emacs Lisp: 関数に引数が渡せない?

    お世話になります。 ----------------------------------------- ; -*- lisp-interaction -*- ; このファイルはtest.elisというファイル名で、そのファイルを開いたバッファで実行 (buffer-name) ;;; ミニバッファに以下のように表示される ;;; "test.elis" (buffer-name "test.elis") ;;; ★引数を与えるとそのバッファ名を返すはず ;;; エラーになる ;;; Debugger entered--Lisp error: (wrong-type-argument bufferp "test.elis") (get-buffer "test.elis") ;;; ミニバッファに以下のように表示される ;;; #<buffer test.elis> (buffer-file-name) ;;; ミニバッファに以下のように表示される ;;; "/home/userName/test.elis" (buffer-file-name "test.elis") ;;; ★引数を与えるとそのバッファのファイル名を返すはず ;;; エラーになる ;;; Debugger entered--Lisp error: (wrong-type-argument bufferp "test.elis") ----------------------------------------- Emacs Lispの勉強として、上のようなファイルを開いて、各関数の括弧綴じ)の後ろでC-x C-eとタイプして実行し、挙動を調べています。 ★をつけたbuffer-nameおよびbuffer-file-name関数は、それぞれ引数を渡したバッファ名、および、そのバッファのファイル名が返ると思われるのですが、実際には上記のようにエラーになります。 これはどうしてでしょうか。 Emacsは23.4.1を使っています。 よろしくお願いします。

  • emacsで選択範囲が正しく認識されない問題

    emacsにて、 Ctrl-@ --> ESC-w で範囲を選択して他のバッファへペーストしようとすると、開始位置をセットした時のカーソルの位置からちょっと先からしかコピーされずに困っています。 このような場合、どのようなことが問題として考えられますでしょうか? なお、OSはSolaris8(Sparc)、emacsは19.34.1(古い!!)です。 新しい環境に以降して色々問題が出ているのですが、環境設定系(.emacsの設定方法や.Xdefaultsの設定をしたい)をコンパクトにまとめた読み物としておすすめは有りませんでしょうか?(オライリーの本は持っております) 以上、宜しくお願いします。

  • ターゲットがUNIXなんですが、Windowsで開発をするには?

    UNIXでC言語を使用してXwindowアプリを開発しているのですが、 効率があまり良くないので、Windowsの統合環境で開発できないかと考えています。 実現するヒントとか、すでに構築済みという方がいらっしゃいましたらご教授願えますでしょうか? UNIXマシンのスペックがそんなに高くなく(Pentium3 600MHz/RAM256MB)、 またOSがEclipseなどもサポートしていないので仕方がなく、viとEmacsで開発しています。 コンパイラはgcc、デバッガはgdbを使用しています。 作成しているのはコンソールアプリではなく、Xwindowのアプリです。 理想はWindows上で、Eclipseのような統合環境上でソースを編集し(ソースはUNIXマシンからSambaで参照)、 リモートでビルドを行い、Windows側でブレークを貼りデバッグできればとても快適です。 ちなみにWindowsマシンのスペックは悪くないです。 Pentium4 2.4GHz/RAM512MB です。

  • リモートデバッグについて

    リモートデバッグについて質問があります。 現在、Red Hat Linux 9.0にて、C言語のプログラミングをしています。 いま作っているプログラムは、CUIの簡単なものです。 環境は以下のとおりです。  エディタ :vi  コンパイラ:gcc  デバッガ :gdb ですが、viに慣れていないのとgdbだとデバッグは全てコマンドになるので、 効率が上がらないです。(スキルも無いのですが。) そこでWindowsXPのマシンで、samba共有のソースをエディタで 編集してみると便利でした(パソコンは2台あります) ただ、コンパイルとデバッグはLinux上になってしまうので、そこから先は同じです。。。 WindowsマシンでLinuxに入っているgdbのフロントエンドみたいなことできないでしょうか? (コンパイル・実行は、Linux上で行われるけど、デバッグは、Windowsから行える) 何か、いい環境はありませんでしょうか? また可能であれば、手順等をお教えいただけますか? ※ちなみにLinuxマシンは、中古の5000円で購入したボロの為、Xウインドウを入れていないです。  なので、GUIの統合環境をLinuxマシンで使用するというのは無しでお願いします。  また、windowsマシンにcygwinを入れるというのもLinuxマシンが可哀想なので、  今回は無しでお願いします。 下記のアドレスにあるソフトを使うと私のしたいことが出来るような気がするのですが、 英語のページなので、細かいところがわかりません。。。 BVRDE http://bvrde.sourceforge.net/index.htm

  • エクセルの関数のコピー

    エクセルの関数を下のセルにコピーをすると、1つずつ関数の式がずれてくるのですが同じ範囲の関数を同じ様に入力したい場合はどうすればいいですか? 例)=VLOOKUP(F3,Sheet2!A1:E5000,2,0) という関数があったとすると 次の行には=VLOOKUP(F4,Sheet2!A1:E5000,2,0) と検索値のみが1つ変わる感じにしたいのですが・・・ コピーでは無理なのでしょうか。やはり1つ1つ数式を入れてやらないとだめでしょうか。