2007年 10月 09日

.

なんだかやっぱり、漠然とした不安がある。

vim の補完

いいかげんどうにかしたいので必死で調べてるんだけどうまくいかない。ちなみに使いにくいのであんまり補完使ってない。

  • C-n しただけではソロでマッチしたとしても絶対に insert (確定) しない

という挙動にしたいだけなんだけど、なんでできないんだろ。ソロでマッチしている場合必ず確定してしまう。

だめだまったくだめだ。

<C-R>=Fun()<CR>

して自力で complete() よべばいいのかなぁとおもったけど、どうやって補完リストとってくればいいのかわからない。

なんでこんな素朴な挙動ができないのかなぁ……

てか complete() もソロマッチだと勝手に補完しやがるな
表示するだけってないのかなほんとに

vim の補完

ソロマッチの insert は諦めた。ほんとどうやってやるんだ……

補完のヒット率をあげるために dict を充実させるようにしようとおもった。で、これもずっと疑問だったんだけど、css とか、キーワードにハイフンを含めたりできるやつの補完ってどう書けばいいんだろう。emacs は記号として認識する範囲を指定する変数があったと思うけど、vim にはないのかな。ヘルプざっとみてるけど、なんか見つけかたが全くわからない。

iskeyword か。
CSS は ftplugin/css.vim で

set iskeyword+=-

してみた

RDoc template Resh gem

gem にしました。

sudo gem install resh

でインストールできます。--template resh のように書くことができるようになりますが、rubygems を読みこんでいないとテンプレート読みこみに失敗するので、RUBYOPT="-rubygems" をつける必要があります。ただし ~/.gemrc の rdoc: とか、RDocTask の書いたりするぶんには、既に rubygems が読みこみされたコンテキストで require が発生するので問題ないです。つまり直接 rdoc コマンドを叩かない限りだいたい大丈夫

今だに光合成ではなく食物で動いているあたり。。。

人間ってだめすぎるな

svn ci のときの

-- この行以下は無視されます --

M    .zshrc

ってでたとき、下の無視されますのところを削除するとそのファイルはこのチャンジセットではコミットしない、みたいな機能があった気がするんだけど、今日ためしてみたらできなかった (TortoiseSVN のコミット画面のチェックボックスみたいなイメージ)。なんだろ。

vim の補完

コメントをもらった。
http://subtech.g.hatena.ne.jp/cho45/20071009#c1191925480
できた! できた! 神すぎる!!!

でもってすこし変更して小文字入力時に常にメニュー出すように (word_complete.vim は捨てた)

set completeopt=menuone,preview
function! CompleteWithoutInsert()
	return "¥<C-n>¥<C-r>=pumvisible() ? ¥"¥¥<C-P>¥¥<C-N>¥¥<C-P>¥": ¥"¥"¥<CR>"
endfunction
inoremap <expr> <C-n> pumvisible() ? "¥<C-n>" : CompleteWithoutInsert()
" 小文字入力で常にメニューだす
let letter = "a"
while letter <=# "z"
	execute 'inoremap <expr> ' letter ' "' . letter . '" . (pumvisible() ? "" : CompleteWithoutInsert())'
	let letter = nr2char(char2nr(letter) + 1)
endwhile
inoremap <expr> <CR> pumvisible() ? "¥<C-Y>¥<CR>" : "¥<CR>"
inoremap . .<ESC>a
inoremap ( (<ESC>a
inoremap [ [<ESC>a
set lazyredraw

なんかこのコードははてなコード記法でハイライトおかしくなるみたいだ。vimcolor だからかな

textarea で TAB おしたときにTABとか入力するようにする。

たまに生で code block 書くときにめんどかった。TAB で移動はつかわないし

	$X("//textarea").forEach(function (t) {
		t.addEventListener("keypress", function (e) {
			if (e.keyCode == 9) {
				e.stopPropagation();
				e.preventDefault();
				var s = t.selectionStart;
				var content = t.value;
				var str = "\t";
				var newstr = content.substring(0, s) + str + content.substring(s, content.length);
				t.value = newstr;
				var pos = s + str.length;
				t.setSelectionRange(pos, pos);

			}
		}, true);
	});