2007年10月28日日曜日
vi で複数のファイルを編集する。 - つづき

前回のエントリの続き。

複数のファイルをviで開いた場合、

:n[ENTER]

で次のファイルに移動して、
:e#[ENTER]

で一つ前のファイルに戻る…

…らしいのだが、e#で戻った場合、nで先に進めないことがあった。

例えば
> vi test01 test02[ENTER]

とした場合、最初に開いているのはtest01ファイルということになる。
そこで
:n[ENTER]

としてtest02というファイルを開く。
そこから
:e#[ENTER]

でtest01に戻るが、そこから
:n[ENTER]

を使うと、これ以上先はないとエラーになる。

そもそもこの「:n」と「:e#」はコマンドとしては別の意味を持ってるんだということに気が付いた。
移動することと、編集することはあくまでも別のことであり、「:n」で移動して「e#」で前に編集していたファイルを開いたというのであれば、現在の場所は「:n」で移動した先のファイルということか。そして「:e#」で編集中のファイルを再定義したことになるのか…

で、戻るコマンドは以下。
:rew[ENTER]


rewind ね…



0 コメント | コメントを書く | コメントの表示
2007年10月25日木曜日
vi で複数のファイルを編集する。

久しぶりに、viでファイル編集中、ふと思い出したのだが、結局使い方をちゃんと思い出せませんでした。

> vi test01.txt test02.txt

とかやって、複数のファイル(この場合2つ)を編集する場合、ひとつの画面にはひとつのファイルしか表示できないので、どうやって切り替える(移動する)かというと…
:n[ENTER]

で次に指定したファイルへ移動する。

じゃ、戻るのは?
:e#[ENTER]

って書いてあるサイトが多いんだけど、これは正確には「一つ前に編集していたファイル」ってことでは?
ここから「:n」で先に進もうとすると、エラーになってしまう。ってことは編集しているのはひとつ前のファイルだけど、今いる場所はさっき「:n」で開いたファイルだよ、と?

実際には
:rew[ENTER]

が正解みたいだね。

あとはバッファへの格納の方法だな。
UNIXコマンド本に僕が書いたメモでは
"名前yy

となっていたんだけど、これ上手く動かなかったんだよね。
viのバージョンとかに依存すんのかな?

明日、もう少し試してみよう。



0 コメント | コメントを書く | コメントの表示
2007年10月21日日曜日
Windows XP の検索犬

常駐先でPCを渡されるたび、いつもイライラするのは、Windowsで検索するときに登場するあの犬。
いや、別に犬のアニメーションはどーでもいいんだけど、あの検索ってやたらと使いにくい。
なので、消す方法を。

まぁ、検索すりゃあいくらでも出てくるんだけど、毎回探すのもなんだから、ここに書いておく。
そのためのblogだからね。

レジストリに以下の値(文字列値)を追加する。

HKEY_CURRENT_USER->Software->Microsoft->Windows->Current Version->Explorer->Cabinet State->Use Search Asst : no

これで消える。



0 コメント | コメントを書く | コメントの表示
2007年9月28日金曜日
またやった - Ctrl-s

なんだか知らないけど、ついついやっちゃうんだよね、Ctrl-sの入力。

で、入力を受け付けなくなる。

毎回やるたびに、ググって解決方法を探す。
いやぁ、頭悪いね。

Ctrl-q で解決しますね。



1 コメント | コメントを書く | コメントの表示
IPアドレスが取れない

ある本を使ってお勉強中。
サーバとクライアントのプログラムを作って通信(Telnet)テスト。

本のサンプルどおりにコーディングするも…

(略)

struct sockaddr_in from;
char client_address[80];

(略)

sprintf(client_address, "%d.%d.%d.%d", from.sin_addr.S_un.S_un_b.s_b1, from.sin_addr.S_un.S_un_b.s_b2, from.sin_addr.S_un.S_un_b.s_b3,from.sin_addr.S_un.S_un_b.s_b4);

(以下省略)


test.c:173: error: structure に `S_un' という名前のメンバはありません
test.c:174: error: structure に `S_un' という名前のメンバはありません
test.c:175: error: structure に `S_un' という名前のメンバはありません
test.c:176: error: structure に `S_un' という名前のメンバはありません

…という結果に。

/usr/include を検索(find/grep)しても、見つからない…ということは、そもそもIPのとり方がNGだと考えるしかない。

でもって、探してみるとinet_ntoa()という関数があるらしい。

なので、こう書いてみる。
sprintf(client_address, inet_ntoa(from.sin_addr));


$ gcc test.c 
test.c: In function `MainLoop':
test.c:172: 警告: 引数 2 個の `sprintf' を渡しますにより、キャストなしで整数からポインタを作りまし
$


ありゃ。訂正。
sprintf(client_address, "%s", inet_ntoa(from.sin_addr));


$ gcc test.c
$

無事コンパイル完了。

これが正解なのかどうかは知らないけどね。
同じサーバからtelnetしてみたら、127.0.0.1が来たから問題ないかな~と思ったんだけど??



0 コメント | コメントを書く | コメントの表示
2007年9月27日木曜日
Compound gadget - iGoogle

個人的なメモなのです。

最近Windows Live.comからiGoogleに完全に移行しました。
本当はどっちでもいいんだけどさ。

で、使ってるうちに、コンテンツが山盛りになってきて、困ってたところに、こういうのを見つけた。

Compound gadget

複数のコンテンツをひとつにまとめるガジェット。
こんなカンジ。

これ便利。


でも、ひとつ気になってるのは、iGoogleにはLive.comと違って、自分が追加したコンテンツを管理できないこと。
これまで追加したコンテンツをどこかにまとめて持っててくれるといいんだけどなぁ。
一旦削除したものは、またURLをコピペして追加しなけりゃならん。
いや、なにか方法はあるのかもしれないけど。

【追記】
タブとしてまとめた場合、タイトルがリンクじゃなくなるみたい。
これはちょっと…不便かな?



0 コメント | コメントを書く | コメントの表示
2007年9月18日火曜日
math.h関連のコンパイルエラー

引き続きC言語のお勉強中。
ちょっとポインタあたりを検索しつつ、お勉強してみる。

でもって、サンプルを実行中、どーしてもコンパイルエラーになる。

$ gcc -o sample sample.c
/tmp/ccgJ0RxZ.o(.text+0x30): In function `sample':
: undefined reference to `sqrt'
collect2: ld はステータス 1 で終了しました
$


なんだよー、math.hきちんとインクルードしてんのにさぁ。

答えは簡単。
で定義されている関数の本体は全て math ライブラリにあります。したがってこのような関数を用いるには、リンクの際に -lm が必要になるわけです。
The Linux GCC HOWTO - 6.2 ライブラリに尋ねる(sin() はどこにいるの?)

いやはやお恥ずかしい限りです。
だからさ、初心者なんだって、結局は。
きちんと勉強をした方がよさそうだなぁ。

The Linux GCC HOWTO
http://www.linux.or.jp/JF/JFdocs/archive/GCC-HOWTO.html



0 コメント | コメントを書く | コメントの表示
Template Design: © 2007 Envy Inc.