棚からパルチャギ

日々の雑記、ニュース拾いとか

2013. 07. 18

MS Word文書もvimで開きたい
$ brew install antiword $ vi ~/.vimrc autocmd BufReadPre *.doc set readonly autocmd BufReadPost *.doc silent %!/usr/local/bin/antiword -m UTF-8.txt '%'
参考: View and diff MS Word files

2013. 05. 17

tern_for_vim導入の話

tern.vimでvimでjavascriptの補完など(vim advent calendar2012, 155日目) - kozo2's blog

リポジトリ独立してから、vimプラグインにternのパッケージ定義が追加されて個別にternをインストールする必要はなくなったので、少し古い感じもする。 自分が導入した時のメモ書きを残しておくなど。

i. インストール

NeoBundleを使っている場合、.vimrcに以下のような記述を追加して :NeoBundleInstall すればよい。 そうでない場合には、~/.vim/bundle/tern_for_vim で npm install を手動実行する。

NeoBundle 'marijnh/tern_for_vim', { \ 'build': { \ 'others': 'npm install' \}}

tern_for_vimはjavascriptのftpluginとして読み込まれて、内部で(勝手に) omnifunc=tern#Complete が実行される。 neocomplcacheでomni補完が無効化されていなければ、特に気にすることなく使えるはず。 サーバは裏で勝手に起動してくれる。

悲しいことに補完周りはjscomplete-vimと競合してしまう。 jscomplete-vimは高速で実用的な補完を実現してくれるので、まだ捨て難い気がしている。

ii. 設定ファイル

.tern-project というファイルを生成すると、そのファイルを含む階層以下でternの設定を変更することができる。 設定の詳細については公式のドキュメントに記載があるけれど、だいたい下記のような感じ。

{ "libs": [ "browser", "ecma5", "jquery" ], "loadEagerly": [ "importantfile.js" ], "plugins": { "node": {}, "requirejs": { "baseURL": "./", "paths": {} } } }

libsは追加で読み込む補完定義を指定する。 デフォルトではbrowser/ecma5/jqueryが用意されていて、browserは console.log() だったりブラウザで拡張されているオブジェクトなどへの対応、ecma5はECMAScript5で追加された要素、jqueryは $("#hoge").click() なんかでも補完できるようになる。

プロジェクトルート(.tern-projectの配置されたディレクトリ)下にlibsディレクトリを作成して、自分で用意した補完定義を読みこませることもできる。

loadEagerlyは指定したファイルを事前に読み込み済みにしておいてくれるようだけど、補完が効くようになるわけでもなく挙動はいまいち分かっていない。。

pluginsはnodeとrequirejsが用意されている。 いずれも指定すると、読み込み先モジュールの補完が効くようになってこれは非常に便利だった。素敵。 libs同様にpluginsディレクトリ下に自前のプラグインを設置できる。

2013. 05. 03

リモート接続先のscreenエスケープキーを変更する

dotfilesはgithubに置いていて結構いろいろな環境で使いまわしているのだけど、ローカル環境とリモートの接続先で同じ設定のscreenが動作している場合なんかに、 エスケープキーがローカルに取られて困ることがあるので、ssh接続時にはリモート側の設定を変更するようにした。

.zshrcにssh接続かどうかの判定を追加して、起動時オプション -e でキーを変更。 Emacs使っていないので普段はデフォルトのCtrl+aのままだけど、リモート接続時にはCtrl+tを使うように設定してる。 ssh接続かどうかの判定は、環境変数$SSH_CONNECTIONに値があるかどうかを見ればよい。

if [ -z "${SSH_CONNECTION}" ] ; then [ ${STY} ] || screen -D -RR -U else setopt nonomatch; screen -UxRR -e^Tt fi

一度変更すると既存のscreenセッションにも影響してしまうので、本当はdetach時に元に戻したりできるとよいなあ。とか。 接続先はだいたいサーバ用途で端末ない想定だし、おとなしくscreenrcを個別に用意するのが普通に簡単という気もする。

2011. 10. 08

byobu-configのためにSnackを入れる

MacBookAirにbyobu入れてみたけど、byobu-config起動しようとするとPythonのsnackモジュールがないと怒られるのでインストールしたメモ。 libnewtに含まれているみたい。Python全然わからない。

そのままFormula書くとPython複数バージョン検出するとこけたので、散々悩んだ結果、野良Formulaに頼って自分の環境用に書きなおした(gist)。

$ cd /usr/local/Library/Formula/ $ wget https://raw.github.com/gist/1272305/ba26d8a5bf9d7fa2e2979d11bfba2c43717e0402/newt.rb $ export PYTHONPATH=/usr/local/lib/python2.7/site-packages/ $ byobu-config
とはいえ、すでに.screenrc書いて普通に使っているとbyobu移行するメリットあまりなかった…。

2011. 09. 27

Subversionでバイナリ扱いになったテキストファイルを一括で属性削除する
$ find . -iname "*.txt" -print0 | xargs -0 svn propget svn:mime-type \ | awk '{print $1}' | xargs svn propdel svn:mime-type
パスに空白含まれてるとawk以降でよくない気がするけどどうしたものか。

  [ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 ]