ひよっこ。

I want to…

Posts Tagged ‘vim’

vim+w3mでreStructuredTextの環境を構築する

Posted by hikaruworld : 2012 6月 10

reStructuredText便利です。はい。
文章を書くときは、これとsphinxで構成するケースが多いです。

ところで便利なreSTなんですが、出来上がりをリアルタイムで確認するようなモノがないのが残念なところです。
Windowsだとrsteditというエディタ&ビューアがあるのですが、
私の環境はMac or Ubuntuなので無理ぽ。
それと自分は、reSTの編集は基本vimですし。

という訳で、何かないかなーと思って探しているとrestviewというものを見つけました。
A ReStructuredText viewerと書いてあるようにシンプルなreSTのビューアのようです。

これとw3m(テキストブラウザ)を使ってvim上でreSTのリアルタイムプレビューできる環境が構築できたので、
忘れないようにログを残しておきます。

必要なもの

エディタとしてvim、ビューアとしてrestviewをバックグラウンドで動かしてw3mで結果の確認を行います。
vimはMacデフォルトの物を使用、
w3mはbrewから。

brew install w3m

restviewはpipでインストールします(要Python)

pip install restview

あと、vimからw3mを参照するのに、w3m.vimというプラグインがあるので導入しておきます。

restviewの起動

編集したいreSTファイルのカレントディレクトリで、

restview -l 9999 .

でrestviewを起動します。-lで任意のポートを指定できます。
これで、カレントディレクトリをrestviewが監視してくれ、
更新された場合にhttp://localhost:9999で変更内容が随時コンパイルしなくても確認できます。

vimの設定

.vimrcに保存時と監視時の設定を組み込みます。


function! RestWatch()
	" TODO バックエンドで起動する
    " !restview -l 9999 . &
    " TODO 事前にプロセスとwindow情報を確認する。今は固定
    " let restview_pid = !pgrep -n -f restview
    " echo !lsof -Fc -a -i -p restview_pid
    :W3mSplit http://localhost:9999
    :wincmd L
endfunction

function! RestW3mReload()
    :wincmd w
    :W3mReload
    :wincmd w
endfunction

command! -nargs=0 RestWatch call RestWatch()
command! -nargs=0 RestReload call RestW3mReload()

autocmd BufWritePost *.rst silent call RestW3mReload()

エラー処理などしていないので思いっきり雑ですが(汗….
# まぁ、その辺は後でやるとして

RestWatchでsplitでw3mを立ち上げてプレビュー画面を立ち上げます。
RestW3mReloadをautocmdに指定する事で、*.rstを保存したタイミングでw3mを再描画しています。

これで、viewで確認しつつvimで書く事が出来るようになりました。
毎回ブラウザ確認するのに比べたら随分快適です。

以上です。

広告

Posted in program | タグ: , , | Leave a Comment »

vimでcoffeescriptの環境再構築したら機能が強化されててビビるなど

Posted by hikaruworld : 2012 6月 7

久しぶりにcoffeescriptを書こうと思いたち、
どうせだしvim-coffee-scriptを最新にしました。

そうしたら、以前からかなり機能が強化されていたのでメモしておきます。

Recompile on write

要するに保存したらコンパイルしてねという設定。

au BufWritePost *.coffee silent CoffeeMake! -cb | cwindow | redraw!

これで、.coffeeなファイルを保存すると、.coffeeと同じディレクトリに.jsなファイルが生成されます。
あと、–bareを有効にして、スコープを限定しないようにしてます。

Watch (live preview) mode

要するにcoffee-scriptを書きながら生成されるjavascriptを見ながら作業できる設定。
これは便利だし、習得が早くなりますね。
頻度が高いのでキーマップを設定しておきます。

nnoremap <Leader>w :CoffeeCompile watch vert<CR>

CoffeeLint: Lint your CoffeeScript

要するにlintの実行。要coffeelint
Quickfixとあわせて幸せになれます。

設定は特におこわなくてもCoffeeMakeの時にやってくれます。

というわけで、大体こんな感じになりました。

以上です。

Posted in program | タグ: , | Leave a Comment »

vimでnodelintを有効化してQuickfixを活用する

Posted by hikaruworld : 2012 5月 3

最近触っていなかったnodeを触ろうと思って、vimの構成を少し弄っていました。
当時はjslintでやっていたvalidationを、nodelintでやってflymakeしよう思い
Vimでnode.jsの文法チェック(nodelint編)』を参考に設定を調整してたんですが、
ちょっとハマッたのでメモしておきます。

なお、以下のバージョンで構築しています。

OS MacOSX(SnowLeopard)
vim MacOSX(SnowLeopard)デフォルトの7.2.108
errormarker.vim Version 0.1.13
node 0.7.8
nodelint 0.6.1

errormarker.vimとnodelintの導入

とにかく、上記サイトに従ってerrormarker.vimとnodelintを導入します。
nodelintの設定まではここでは行いません(npm install -g nodelintまで)。
なお自環境との違いは、homebrewではなくてnaveベースなことです。

nodelintの設定変更

自分の確認したnodelint 0.6.1では、–reporterという引数でnodelintの出力形式が指定できるようです。

以下のコマンドでデフォルトで提供される出力形式が確認できます。

nodelint --list-reporters

以下、出力結果です。

Build-in reporters: 
* default: Default reporter
* idea: IDEA reporter
* textmate_full: Textmate full HTML reporter
* textmate_summary: Textmate full HTML reporter
* vim: VIM syntastic reporter
* xml: XML reporter

ご丁寧にvimの出力形式が準備されているのでありがたく使わせて頂きましょう。
ただ、ちょっとだけ出力形式が見づらいので修正します。

実際のvim用のreporterファイルは以下にあります。
$NODE_PATH/../node_modules/nodelint/lib/reporters/vim.js
変更内容は以下です。半角スペース入れて、文字列を一部切り詰めます。

41c41
<       str += file  + 'line ' + error.line +
---
>       str += file  + ' line ' + error.line +
43c43
<         ' Error: ' + error.reason + ' ' +
---
>         ' E: ' + error.reason + ' ' +

errormarkerの設定

基本的には参考サイトの通りですが、–reportersの設定を追加する事とerrorformatの設定を変更します。
あと、自分の場合は、$HOME/.vim/bundle/errormarker/ftplugin/javascript/flyquickfixmake.vimになります。

setlocal makeprg=$NODE_PATH/../../bin/nodelint\ --config\ $NODE_PATH/../node_modules/nodelint/config.js\ --reporter\ $NODE_PATH/../node_modules/nodelint/lib/reporters/vim.js\ %
" main.js line 2 column 1 E: ......
setlocal errorformat=%f\ line\ %l\ column\ %c\ %t:\ %m

if !exists("g:javascript_flyquickfixmake")
    let g:javascript_flyquickfixmake = 1
    au BufWritePost *.js silent make
endif

いくつか補足をば。
* makeprgの指定に関しては、naveを利用している都合上都度変更されるため、$NODE_PATHを基点に定義しています。
* –reporterに関しては既に記述した通りです。
* config.jsはインストール時のまま特に弄っていません(参考サイト通りに変更していません)。
* errorformatは–reporter vim.jsの出力形式にあわせています。
* make処理は一々表示して欲しくないのでsilentにしています。

.vimrcの設定

一部.vimrcの設定も変更しました。

" 保存時にerrormaker.vimでCUIの画面がぶれるので、いったん再描画する
autocmd QuickfixCmdPost make redraw!
" quickfixに対象が存在した場合に自動起動する用に設定
autocmd QuickfixCmdPost make if len(getqflist()) != 0 | copen | endif
" quickfixに対象が存在しなかった場合に自動で閉じるように設定
autocmd QuickfixCmdPost make if len(getqflist()) == 0 | cclose | endif

以上です。

参考にしたサイト

それマキ(それ今mackeeがやってるよ)
vimdoc-jar quickfix

おまけ

そういえば、:signが有効になんないんですよね。

E319: Sorry, the command is not available in this version

とか言って怒られますorz…

Posted in program | タグ: , , , | Leave a Comment »

vim-ref-html/vim-ref-html5/vim-ref-jsも作ってみた

Posted by hikaruworld : 2011 12月 6

前回に追加。

vim-ref-XXXシリーズ。

表題の通りですが、
vim-ref-htmlvim-ref-html5vim-ref-jsも作ってみました。
リソースは大体formAptanaさん。

tar.gzはこちら。
vim-ref-html
vim-ref-html5
vim-ref-jscore
vim-ref-jsdom

html5はhtmljp5をwgetさせてもらいましたが、w3mとかで見ると不要な情報があるのでarticle辺りで
スクレイピングすると良い感じです。一応scrape.pyもUPしておきます。

wgetのスクリプトもあげてますが利用する場合は自己責任で。

追記

jsdom版も作っておきました。
あとJSに関してはURL指定しても使えるように修正。

Posted in program | タグ: , , , | 1 Comment »

vim-ref-node(オフライン用)とか試しに作ってみた

Posted by hikaruworld : 2011 12月 5

最近javascriptはvimで書いていたりします。
自分はエディタ(というかIDE)はEclipseな人なんですが、
javascriptはそこまで補完が聞いてくれないので、pythonとかでも使っていたし、
いい機会だと思ってvimで作業しています。

で、vimには様々なプラグインがある訳ですが、その中でvim-refというプラグインがあります。
これとても便利で、vim上でAPIリファレンスが簡単に見れます。

色々vim-refのプラグイン的なものもあるんですが、javascriptやHTML5がなかったので、
書いてみました。

とりあえず、nodeのvim-refを作ったのでlaunchpadにUPしておきます。
まぁbzr使ってる人もあんまりいないと思うので、こちらからもtar.gzで落とせます。

# githubにあげようと思ったけど、アカウント忘れてめんどくさくなった。
# そのうち…

vimscript初心者がvim-jqueryをまねててきとーに作っただけですので
バグっていると思いますが….。
気になったのが、w3mで確認したんですが、アンカー指定で渡してもうまく行かないよう。
後でもうちょっと調べてみたい。
これの問題が解決すればfs.watchみたいな感じでドット間で補完できるようにしたいデス。

nodeのリファレンス自体は、githubにおいてあるのでそこから引っ張ると良いでしょう。
# githubってどれがマスターかいまいち分からんorz…
# 自分はこれを頂きました。

以上です。

Posted in program | タグ: , , , , | Leave a Comment »

QuickJUnitのvim版が見当たらなかったので、それ風に作ってみた

Posted by hikaruworld : 2011 11月 6

QuickJUnitという、かゆいところに手が届くめちゃ便利なEclipseプラグインがあります。

一言で言うと、ショートカットキーでプロダクトコードとテストコードの簡単に行き来したり、
メソッドレベルで簡単にテストを実行する事が出来ます。

私はEclipse使いなのですが、動的言語はvimで書いたりするので、
vimにもそういったプラグインがないかなーと思って探していたのですが、
見当たらなかったので簡単に作ってみました。

機能としてはシンプルで、プロダクトコードとテストコードをで行き来します。
プロダクトコードがFizz.jsだった場合は相対パス場に存在する./test/Fizz_test.jsを探します。

簡単に実行したい時はQuickRunプラグイン辺りを入れましょう。

対象コードの検索のテスト名やfiletypeでのカスタマイズとか
簡単に実行とか欲しいものはありますが、
とりあえず今求めていた機能はこれがミニマムセットなので、
まぁ、気が向けば拡張しようと思います。

以下コードです。

function! QuickChange()
	let file_rh = expand("%:t:r")
	let index = matchend(file_rh, "_test")
	let file_h = expand("%:p:h")

	if index == -1 || index != strlen(file_rh)
		" main => test
		execute "args" file_h . "/test/" . file_rh . "_test." . expand("%:e") 
	else
		" test => main
		execute "args" file_h . "/../" . expand("%:s?_test??")
	endif
endfunction

" KeyMap
map <C-T> :QuickChange<CR>

" Command
command!	QuickChange		call QuickChange()

一応プラグイン化してbzrにUPしてあります。

以上です。

Posted in program | タグ: , , | Leave a Comment »