goo blog サービス終了のお知らせ 

dullhikoのだるいブログ

殆ど日記のだるいブログ

備忘録 Vimのスクリプトでの置換用関数

2005年09月07日 | ソフトウェア
vimから、現在編集中のスクリプトに対してpythonをpdb付きで起動できるようにしてあったのだが、何故か突然、スクリプトへのパスが見つからないと言い出した。
(もしかして最近のpdb.py日本語化改造が影響してるのかもしれない)
が、原因がよく判らない。もともとおかしかったんだろうか?
とにかく、よく見てみると、与えられたパスが化けている。

d:\\python\\test\\test.py

という風なのが渡されてるとしたら、

d:\\\\python\\test\\test.py

にされている。多分、再評価されて最初のパス区切りだけが有効、後のは\\tとして認識されているのだろう。
Windowsならではの光景とでも言うか…うーむ。
ともかく、修正せねばなるまい。

いろいろ考えたのだがwindowsでもpythonはパスデリミタを/(スラッシュ)で認識してくれる。要するに、python pdb.pyで起動するときにあらかじめvimスクリプト内で\\を/に置換してしまえばいいのだ。

探した結果、vimのスクリプトでは
substitute(ソース文字列,置換元パターン,置換文字列,フラグ)
という関数がこの目的にぴったりであった。
具体的にはcurfilenameという変数に対象となるパスが入っていれば

let curfilename=substitute(curfilename,"\\","/","g")

とすればいい。

俺の場合、もう少しでmatchとwhileを使ってループさせてstrpartなど使ってパスを切り刻んで変換処理を行いそうだったのはナイショだ。

BlenderのPythonでエラーが出た件について

2005年09月06日 | ソフトウェア
Blenderで使っているPythonは2.3.xである。
そして、Windows版のBlenderはPython23.dllが同梱してあり、それを使ってPythonインタプリタを実行しているようだ。

で、俺がPythonとして入れてるのは2.4.1。
この状態で、Blenderを起動してPython周りを触るとエラーが出ていた。syntax errorとか、そういうPythonのスクリプト実行時エラーだ。Python自体が動作しない、というようなものではない。

よく見ると、これがどうもPython2.4のスクリプトライブラリを見ているようだ。
これって2.3に入れ替える他無いのかねぇ…っと途方にくれていたところ。

そういえば、俺、以前にPYTHONPATHって環境変数を手動で入れてたような…

早速試してみた。PYTHONPATHを2.3に変えてみたのだ。
すると、Blenderは問題なく動く。(って、既にPython2.3はアンインストールしてあるから、Python2.3のライブラリを見ているとしてもディレクトリが残ってるだけなんだが…)
そして、2.4向けのPythonWinを起動してみる。
やはりというか、今度はこっちが動かない…

さて、PYTHONPATHはそもそもおれの環境では存在しなかった環境変数であり、ググって見つけて書いてみただけだった。何かのライブラリでインポートできないとかいう悩みを抱えていたときにやったような気がする。
結局、それは俺の勘違いで、パスの問題ではなかった、という結末だったと思う。まあとにかくブログつか日記にさえ書かなかったぐらいの些細な出来事であった。

そこで、思い切ってPYTHONPATH自体を消してみた。
結果…

○ Blender
○ PythonWin (for 2.4)

という素晴らしい結果になった。本当にこのままで大丈夫かどうかはわからないが、とりあえずこのままで行ってみる予定だ。

備忘録 Vimで正規表現を使った置換

2005年09月05日 | ソフトウェア
たとえば、こんな関数呼び出しを意味する文字列が大量にあって、

func("some string argument")

でも、何らかの事情で

func('some string argument')

こう、全てのfunc呼び出しをシングルクォートにしたくなったとする。
でも何にも考えずにやると文字列の中身を消してしまうので
グルーピング(と、ここでは呼んでいる。正規表現によるマッチ部分を記録する仕組み。用語的に正しいかどうか…は考えるのがめんどう)が必須なわけだ。
そんなときのコマンドは…

:%s/func("¥(.*¥)"/func('1'/g

この話のミソは
・vimの正規表現では¥(~¥)で囲んだ中身がグルーピング
・vimの正規表現では1,2というようにグルーピングを表す
と言うこと。

処理系によって()がグルーピングで¥(¥)は普通のカッコだったり、いろいろと細かい違いがあるのが辛いですなあ。

Inkscapeの0.42.2が出ていた

2005年08月31日 | ソフトウェア
バグ修正版、だそうだが。
XPのスタイルが適用されるようになっていた(単にmanifestファイルがくっついてるだけかもしれないが)

あと描画バグが直ってるっぽい。ちょっと変な時があったが一応、いまのところそれはなくなっている。

いいじゃん。Inkscape。

やはり備忘録:vimで新規ファイルにsyntaxを適用する

2005年08月19日 | ソフトウェア
当たり前だが、新規ファイル(つかバッファ)を作ったとき、いきなりはsyntax coloringが適用されない。
そりゃ作成直後は無名、ファイル形式を探る方法さえないのだから当然である。

そこで、俺はいままで無精者の本領を発揮してメニューからマウスでわざわざ選択していた。てか、これってやっぱり余計に面倒じゃん、ということで。
ググりました。

set ft=python

こんな感じ。

ところで、vimのファイルエクスプローラにディレクトリ生成が無いのがちょっと悲しい… 俺がその方法を知らないだけの予感はしまくっているが

VimのSignについて間違えたことを書いていた俺

2005年08月18日 | ソフトウェア
pythonなどに絡んでVimの統合開発環境化を狙いつつ。
signってどうだったかな、と日記blogの備忘録的な使い方を実践してみたが、実は自分が間違ったことを書いていたことが判明した (汗

「備忘録 Vimで特定行に印をつけるにはどうするか ソフトウェア / 2005年04月19日」
の記事に書いてあることだが、

sign place 0 line=30 name=s1 buffer=1

これは、エラーになる。signのIDは1から始まる。0はエラーとして受付られないようだ。

sign place 1 line=30 name=s1 buffer=1

つまり、これが正しい。なおbuffer引数はバッファリストでも見て適切なバッファIDを得ないとやっぱりエラーになる。当然だが。

該当記事には自己トラックバックしておいた。が、いまいちトラックバックについてよく理解できていない俺。

今更Excelに触れてみる

2005年08月16日 | ソフトウェア
今更だがMicrosoft Officeを導入。
Excelを使ってみた。

はあ、参照は=の後にセルアドレスを入力すればいいのか…
こんなことも知らないんだから恐ろしい > 俺

変な関数じゃなくてPythonスクリプトをセルの計算式に指定できれば面白いのだが。
もしかするとVBScriptなら可能なんだろうか。
まあ、どうでもいいけど。

とか言いつつ、Excelをいじるのって結構面白いと思ってしまった俺ガイル。

あと、合計にSUMという関数があるのにMULとかDIVが無い(と思う)のはいかがなものなのか。しかも合計はSUMなんか使わずに+で普通に出来るし、じゃあなんでSUMは存在するのか…これが世間というものか(やや意味不明)

Inkscape ver0.42キタ━━━━━━(゜∀゜)━━━━━━ !!!!!

2005年07月27日 | ソフトウェア
というわけでver0.42、出てます。
まだインストールしてないけど、結構グラデーション回りが改良されたっぽく
使いやすくなってるといいなぁ。

追記するけど、入れたままだとメニューのフォントが相変わらず化けるんだけども
普通にc:\\program files\\inkspace\\etc\\gtk-2.0\\gtkrcファイルの中身を
gtk-font-name="MS UI Gothic 9"
とかするのではダメで、
以下のテキストを付け加えたらメニューが日本語で化けずに表示できたよ、と。

gtk-theme-name = "MS-Windows"
style "user-font"
{
font_name="ms ui gothic 9"
}
widget_class "*" style "user-font"