読者です 読者をやめる 読者になる 読者になる

第3回vimrc読書会の備忘録

vim

1月3日に行われたvimrc読書会の備忘録です。
色々と指摘を頂く事ができたので、指摘を元に後日vimrcを修正しようと思います。

メモ

  • helptagsってどんな仕様?
    • ファイルが増減する度に1回実行する
    • ファイルが増えたときだけ実行したい
  • best_tipsは何を参照しているのか?
  • filetype plugin onやfiletype indent onはautocmdが有効じゃないと実行しない?
    • YES
  • コメントが嘘をついているところがちらほら
  • jをgjで上書き
    • 対称としてgjをjで上書きする設定もあった方がよさそう
    • jにgj割当は小学生?
  • 選択した文字を検索する関数のリファクタリング*1
function! s:search_the_selected_text_literaly()
  let reg_0 = [@0, getregtype('0')]
  let reg_u = [@", getregtype('"')]

  normal! gvy
  let @/ = @0
  call histadd('/', '\V' . escape(@0, '\'))
  normal! n

  call setreg('0', reg_0[0], reg_0[1])
  call setreg('"', reg_u[0], reg_u[1])
endfunction
  • encoding変更のmapがあるけどそんなに使う?そもそも変更しない方がよいのでは?
    • ほとんど未使用のmap
  • ステータスラインの表示いいね。
  • 検索用のmapがおかしい
  • surroundの定義の可読性を良くする
let g:surround_{char2nr('x')} = '>x<'
  • simaltのmap設定が間違っているよ
    • Alt Space xを使ってみては?
  • privateの設定ファイルチェックはfindfileよりfilereadableの方が良いのでは?
  • なんの設定をしてあったかわからなくなったらTELLME:
    • html_use_cssはsyntax/2html.vim
  • CamelCaseMotionの設定が駄目なのは を使おうとしているからだよね。
:help <Plug>
  • tagsをたくさん指定しているがこんな感じでどう?
set tags+=./tags;
function! CsvCol2Index(colName)
ruby << EOF
colName = VIM::evaluate("a:colName")
columns = eval("[#{VIM::Buffer.current.line}]")
colIndex = columns.index(colName) || -1
VIM::command("return '#{colIndex.to_s#}'")
EOF
endfunction
  • Allargs関数 == :argdo
  • netrwの設定
  • ヘルプに載っていない「x:」
    • helpgrepで調べる*2
    • kanaさんがどこかで書いたコードを拾った模様

最後に

自分のvimrcを世の中に晒すだけでなくスポットを当てたReadingの対象になるのはハラハラでしたが、終わってしまえばそんな気持ちもどこ吹く風で、vimrcを公開おいてよかったなーと思いました。
自分の弱い部分や駄目な所が改めてわかった貴重な体験でした。

vimrcを指名してくれたujihisaさんをはじめ、読書に参加してくださった方々どうもありがとうございました。

感想

  • かなり荒いvimrc
  • ほとんど使っていない設定も多かった
  • 便利な設定を見つけてはコピペの繰り返しはカオスの予兆
    • 理解と自分なりのカスタマイズが必要
  • 驚くほどいっぱい突っ込んでもらえた
    • 同時にヘボさ大爆発

*1:原形なし

*2:載っていなかったけど