今更だけどvimperatorが便利すぎる.
dでタブを消したときにtabかescを押さないと
フォーカスがvimperatorを離れているような気がする.
そこだけ改善されたらいいのだけど,どこかに情報ないかしら.*1
以下,.vimperatorrcと入れてるプラグイン
[更新:2009/04/19]
echo "Loading...." set titlestring=Fx3 set guioptions= set hlsearch set visualbell set wildoptions=auto set complete=sl set focuscontent set ignorecase set ui.key.generalAccessKey=0 set verbose=1 set history=5000 set hintmatching=custom let g:ex_ime_mode = "inactive" let g:textarea_ime_mode = "inactive" let g:hintsio="iO" let g:hintchars="HJKLASDFGYUIOPQWERTNMZXCVB" colorscheme sweets noremap j 20j noremap k 20k noremap <C-j> gt noremap <C-k> gT cnoremap <C-j> <Tab> cnoremap <C-k> <S-Tab> map <C-C> :copy titleAndURL<CR> map c :copy<Space> map s :gsearch<Space> " copy.js javascript <<EOM liberator.globalVariables.copy_templates = [ { label: 'titleAndURL', value: '%TITLE%\n%URL%' }, { label: 'title', value: '%TITLE%', map: ',y' }, { label: 'url', value: '%URL%' }, { label: 'anchor', value: '<a href="%URL%">%TITLE%</a>' }, { label: 'selanchor', value: '<a href="%URL%" title="%TITLE%">%SEL%</a>' }, { label: 'htmlblockquote', value: '<blockquote cite="%URL%" title="%TITLE%">%HTMLSEL%</blockquote>' }, { label: 'ASIN', value: 'copy ASIN code from Amazon', custom: function() content.document.getElementById('ASIN').value}, { label: 'hatena', value: '[%URL%:title=%TITLE%]' }, ]; EOM " Google Reader autocmd LocationChange .* js modes.passAllKeys = false autocmd LocationChange www\\.google\\.(co\\.jp|com)/reader js modes.passAllKeys = true " disable accesskey " javascript <<EOM " liberator.options.setPref(’ui.key.generalAccessKey’, 0); " EOM " Gmail js <<EOF autocommands.add('LocationChange',/mail\.google\.com\/(mail|a)\//,[ 'js plugins.feedKey.setup(', '"c / y j k n p o u e x s r a # [ ] z ? gi gs gt gd ga gc".split(/ +/).map(function(i) [i, "4" + i])', ');' ].join('')); EOF echo "done" " vim: set ft=vimperator:
- 入れたplugin
- char-hints-mod.js
- commandBookmarklet.js
- copy.js
- feedSomeKeys.js
- googlesuggest.js
- 入れたtheme
- sweets
*1:ぐぐれかすですね,わかります
読む本,読んでいる本,読んだ本
ナラタージュ
9月のサークル合宿で行われる読書会の課題本.
Amazonであらすじを確認.甘い甘い,青い春の物語のよう.
こういう小説って背中のあたりがかゆくなる.
甘ったるいのは苦手なので,さっさと買ってさくっと読みたい.*1
- 作者: 島本理生
- 出版社/メーカー: 角川書店
- 発売日: 2005/02/28
- メディア: 単行本
- 購入: 2人 クリック: 69回
- この商品を含むブログ (403件) を見る
サイ本
今更ながら,JavaScript絶賛入門中.
サイ本をひたすら読んでは,コードを書いている.
いつも通り「こう書けるんじゃないかな?」と思ったコードが書けたり書けなかったり.
もう慣れしかないですね.あとは,愛.
- 作者: David Flanagan,村上列
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/08/14
- メディア: 大型本
- 購入: 52人 クリック: 1,011回
- この商品を含むブログ (270件) を見る
はがれん20巻
読んだ後に読まなくても良かったかなと思った.
その理由として,
- この先に「転」があることがわかると,「承」になかなか価値を見いだせないからなのか
- 単純に,読んで満足してしまったからなのか
よくわからない.でも,はがれんは良い作品です.
誇って輸出していい作品だと俺は思う.
- 作者: 荒川弘
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2008/08/22
- メディア: コミック
- 購入: 18人 クリック: 91回
- この商品を含むブログ (256件) を見る
*1:とか言いつつ,読んで切なくなってほろりときたりするんだろうなぁ
Pythonでのエンコーディングの設定
Pythonで,日本語を用いる場合や文字列処理を行う場合には,エンコーディングの設定めも
Pythonのsite-packagesの場所確認方法
site-packagesの場所はOSやPython のインストー ル場所によって異なるのでまずは場所の確認.
シェル上から以下のコマンドを実行する.
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
Pythonのエンコーディング
site-packagesディレクトリ以下にsitecustomize.pyというファイルを作成する.
sitecustomize.pyの内容は、UTF-8の場合には下記のようにする.
import sys sys.setdefaultencoding('utf-8')
辞書でvalueからkeyを引く
valueが数値のとき,
「valueがもっとも小さいものから5つkeyが知りたい」
「valueがもっとも大きいものから5つkeyが知りたい」
という場合.*1
testdic = {'hoge':5, 'fuga':50, 'piyo':25} testlist = zip(testdic.keys(), testdic.values()) #[('fuga', 50), ('piyo', 25), ('hoge', 5)] testlist.sort(lambda a, b: cmp(a[1], b[1])) #[('hoge', 5), ('piyo', 25), ('fuga', 50)]
もっと簡単にもかけるようです.(コメントでアドバイスいただきました)
testdic = {'hoge':5, 'fuga':50, 'piyo':25} testlist = testdic.items() #[('fuga', 50), ('piyo', 25), ('hoge', 5)] testlist.sort(key=lambda a: a[1]) #[('hoge', 5), ('piyo', 25), ('fuga', 50)]
(うーん,items()とかいつも使っているのに,不覚...)
あとはスライシングするとか.
for k, v in testlist[:2]: print k
とかとか.
たまーにvalueからkeyを引きたいんだけど,
どうしようと思うときがあるのでめもめも.
*1:任意のvalueをもつkeyが複数有る場合は知らない
virtual-pythonとsetuptools
id:cubicdaiyaに「日記をいつ書くんだ」と言われ,
毎回「来月になったら本気出す!」と言っているid:aircastleことワサビこと木浦でございます.*1
突然ですが,大学でvirtual-pythonを入れて作業をしなければならないことになりました.
virtual-pythonだけではなくて,setuptoolsも入れることになったので,インストールの覚え書きです.
なお,ここでは手元のMacBookでテストを行ったことについて書きます.
virtual-python
virtual-pythonとは
virtual-pythonはサーバなどにインストールされたpython環境を
ホームディレクトリ内などに構築するためのものです.
「どういう場合に必要なんだ!」という人のために説明を書くと,
例えばレンタルサーバなどがあります.
レンタルサーバでsetuptoolsを使おうとすると,
権限の関係でpackageをインストールできなかったりします.
こういう場合には,自分のホームディレクトリ内などに,
python環境を作り,ホームディレクトリ内のpython環境を用いてsetuptoolを実行すれば,
ホームディレクトリ内の特定フォルダにpython packageをインストールすることが可能です.
なので,ここに書くことはさくらインターネットなどにも,まま応用可能です.
インストール方法
先にコマンドを書いてしまうと下記の通りです.
%pwd /Users/wasabi/ %wget http://peak.telecommunity.com/dist/virtual-python.py %mkdir python %python2.5 virtual-python.py --prefix=/Users/wasabi/python
複数バージョンのpythonをインストールしていてなおかつ,
特定のバージョンに対してvirtual-pythonをインストールしたい場合は,
virtual-python.pyを実行するpythonコマンドを明確に指定しましょう.
ここでは,上記の通り,python2.5コマンドを用いて実行します.
デフォルトエンコーディングの設定
これでインストールができたので,デフォルトエンコーディングの設定を行っておきます.
ホームディレクトリ以下のpython環境のsite-packagesの中にsitecustomize.pyというファイルを作ります.
%pwd /Users/wasabi %cd python/lib/python2.5/site-packages %touch sitecustomize.py %emacs sitecustomize.py
sitecustomize.pyには以下のように書きます.
import sys sys.setdefaultencoding('utf-8')
日本語を用いた処理などを行わないのであれば,この設定は必要有りません.
作った環境についての詳しいこと
%ls -R ~/python
などとすると,ディレクトリ構造がわかります.
binフォルダには,各種コマンドがインストールされ,
libフォルダには各種ライブラリがインストールされていることがわかります.
setuptools
setuptoolsとは
setuptoolsはpythonでのパッケージ管理システムです.
setuptoolsをインストールすれば,easy_installというコマンドができ,
pythonで作られた便利なパッケージをpythonから利用することが可能です.
インストールの前に!
setuptoolsのインストールをする前に,以下の2つを設定する必要があります.
- setuptoolsを用いてパッケージをインストールする場所
- setuptoolsを用いてインストールしたコマンドを入れる場所
これらを.pydistutils.cfgとして設定します.*2
%pwd /Users/wasabi/ %touch .pydistutils.cfg %emacs .pydistutils.cfg
このファイル内に設定を行います.
virtual-pythonを用いて設定したのはホームディレクトリのpythonフォルダでしたね.
このフォルダの下のほうには先に示したようにsite-packagesフォルダがあります.
また,binフォルダの中にコマンドが入っているので,
ここにsetuptoolsでインストールしたコマンドを入れるのがよいでしょう.
というわけで,.pydistutils.cfgには以下のように設定してみました.
[install] install_lib = ~/python/lib/python2.5/site-packages install_scripts = ~/python/bin
インストール
やっとこれでsetuptoolsのインストールができます.
%pwd
/Users/wasabi
%wget http://peak.telecommunity.com/dist/ez_setup.py
%~/python/bin/python ez_setup.py
これで,setuptoolsのインストールができました.
~/python/bin以下にeasy_installがあればインストールは成功です.
%~/python/bin/easy_install simplejson
などとして,simplejsonがインストールできるかどうか確認しましょう.
%~/python/bin/python
として,インタラクティブシェルからimport simplejsonができることも確認しておきましょう.
最後にPATHの設定をして,終了です.
screenの設定
MacBook内のApacheでTracを動かそうとしてはまっている山葵です。
Tracのこともおいおい書きたいのですが、今回はScreenについてです。
Screenとは
UNIXやLINUXでは単一のコンソールだけでは、足りないことがあります。
コンソール上でパッケージ管理システムでインストール作業などを行っている場合に
他の作業などを行いたい場合にはAlt+→などで他のコンソール画面を呼び出すこともできますが。
X上でのktermなどではそれができません。
screenはこのような場合に、単一のコンソール上で仮想画面を複数操作するためのソフトウェアです。
インストール方法
すでに、さくらインターネットへのインストール方法は書きました。
BSD、Linuxでのインストール方法は以下のとおり。
あ、うろ覚えなので間違ってるかもです(ぇ
# port install screen
# aptitude install screen
# yum install screen
で、実際の設定について
設定ファイルはホームディレクトリ(~/)に.screenrcを作成しましょう。
Prefixキーの設定
次にPrefixキーの設定を行います。
Screen起動後に、Screenの操作を行うためには、そのことをscreenに教えてあげるために
Prefixキーを打つ必要があります。
初期設定ではPrefixキーは!^Aa(Control+a)に割り当てられていますが、
僕はEmacsユーザなので、このキーをscreenに取られると困ることが多々あるので、
他のPrefixキーを割り当てます。
例えば、Control+zとか。
escape ^Zz
スタートアップメニューの削除
Screen起動後に端末に表示されるメッセージの表示がうざい人は消しましょう。
startup_message off
デタッチ
現在利用中のScreenを中断することをデタッチ(中断)、
再開することをアタッチ(再開)と呼びます。
不安定な端末などをScreen上に表示している場合などには、
端末が突然終了する場合もあり、そのような場合には自動的に端末を中断状態にしたいです。
autodetach on
現在実行しているscreenから抜けるには、C-z dとタイプします。
デタッチしたscreenにもう一度アタッチすることで前の状態に戻る。
アタッチ
一度抜けたscreenを再度起動するには以下のコマンドを実行する。
$ screen -x (screenのプロセス番号)
screenプロセスが1つしかない場合は、プロセス番号は省略可能です。
プロセス番号の確認
端末のプロセス番号の確認方法
$ screen -ls
コピーモード
C-z [ とタイプすると、screenはコピーモードになります。
viなキーバインドでカーソル移動が可能である。
なお、Emacsのキーバインドを用いるには下記の設定を記述する。
markkeys h=^b:l=^f:$=^e:^d=^v:^D=^V
スペースキーを押せばコピーの始点が記憶され、二度目で終点が記憶されてコピーモードを抜ける。
C-z [ でコピーモードを抜けます。
Emacs key bind
bind 2 split などとするとデフォルトの
ウインドウ切り替えコマンドを上書きしてしまう場合がある
bind x eval 'echo "2: split / 1: only / 0: remove / o: focus r: resize"' 'command -c REGION' bind -c REGION 2 split bind -c REGION 1 only bind -c REGION 0 remove bind -c REGION o focus bind -c REGION r eval 'echo "j: -1 / k: +1 / other: quit"' 'command -c RESIZE' bind -c RESIZE = eval 'resize =' 'command -c RESIZE' bind -c RESIZE J eval 'resize +5' 'command -c RESIZE' bind -c RESIZE K eval 'resize -5' 'command -c RESIZE' bind -c RESIZE j eval 'resize +1' 'command -c RESIZE' bind -c RESIZE k eval 'resize -1' 'command -c RESIZE'
# 本当はevalとかについても詳しく書くべきなのだろうなぁ。
logging
Screenでのコマンド履歴を保存します。
logで保存のon、offを指定し、logfileでlogfileの場所を指定する。
(以下は僕のMacBookの場合です。)
log on deflog on logfile "/Users/hogehoge/log/screen-%Y%m%d-%n.log"
コマンド履歴
コマンドの履歴の保存行数を示す。
defscrollback 3000
ビジュアルベル
Screenではビープ音を鳴らす代わりに、端末下部にメッセージを表示します。
うざい人は消しましょう。
vbell off
端末下部のステータスラインに情報を表示する
ステータスラインに情報を表示すること設定も可能です。
ここでは、見つけたものをいくつか。
- ステータスラインに端末一覧と時刻を表示する。
hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w"
- ステータスラインに端末一覧と時刻を表示する。
hardstatus alwayslastline "%{= rw} %H %{= wk}%-Lw%{= bw}%n%f* %t%{= wk}%+Lw %{= wk}%=%{= gk} %y/%m/%d %c "
- ステータスラインに端末一覧のみを表示する。
hardstatus alwayslastline "%w"
表示方法については、おぼえがき@tips for GNU screenが詳しいです。
参考文献など。
コピペ用
# エンコーディング defencodig utf-8 ## Prefixキーの設定 escape ^Zz # スタートアップメニューの削除 startup_message off # プロセス番号の確認 ## $ screen -ls # オートデタッチ autodetach on # コピーモード # C-z [ とタイプすると、screenはコピーモードになる。 # viなキーバインドでカーソル移動可能 # スペースキーを1度押せばmark set 二度目でコピー。 # C-z [ でコピーモードを抜ける。 # emacs keybind for copy mode markkeys h=^b:l=^f:$=^e:^d=^v:^D=^V # Emacs key bind # bind 2 split などとするとデフォルトの # ウインドウ切り替えコマンドを上書きしてしまう場合がある bind x eval 'echo "2: split / 1: only / 0: remove / o: focus r: resize"' 'command -c REGION' bind -c REGION 2 split bind -c REGION 1 only bind -c REGION 0 remove bind -c REGION o focus bind -c REGION r eval 'echo "j: -1 / k: +1 / other: quit"' 'command -c RESIZE' bind -c RESIZE = eval 'resize =' 'command -c RESIZE' bind -c RESIZE J eval 'resize +5' 'command -c RESIZE' bind -c RESIZE K eval 'resize -5' 'command -c RESIZE' bind -c RESIZE j eval 'resize +1' 'command -c RESIZE' bind -c RESIZE k eval 'resize -1' 'command -c RESIZE' # logging log on deflog on logfile "/Users/hogehoge/log/screen-%Y%m%d-%n.log" # copy/scrollback mode (C-t esc)で戻れるhistory bufferを増やす。 defscrollback 3000 # ビジュアルベルをoffにする。 vbell off # 画面下に時刻&スクリーン一覧を表示する。 # hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w" # 色つき。 hardstatus alwayslastline "%{= rw} %H %{= wk}%-Lw%{= bw}%n%f* %t%{= wk}%+Lw %{= wk}%=%{= gk} %y/%m/%d %c " # 画面下にスクリーン一覧を表示する。 # hardstatus alwayslastline "%w"