Vim使いへの足跡(実践)

情報収集ばかりしていても仕方ないため、情報収集は程々にして開発に使い始めます。使いながら足りない部分の追加、情報収集をおこなっていきます。最後にまとめが書けるようにしたいです。

リスト(新しい順に並んでます)

  • Taglistでアウトラインを表示する
  • ctagsを入れて補完やタグ検索を強力にする
  • tabstopって基本なんですね
  • Pythonの文法チェックなどのおこなわせたい(未了)
  • HTMLタグの自動補間がうまく動かない(未了)
  • 画面のサイズをコマンドで変更したい
  • 過去に実行したコマンドをまた打ちたくない
  • 文字列置換が一気におこなわれてしまう。置換を確認しながらおこなう方法はないの?
  • コードアシストがなくて困った
  • エクスプローラーでファイル探索をおこないたい
  • ":n"だと画面が分割される?
  • 行頭でのtab入力のインデントがおかしい

Taglistでアウトラインを表示する

ソースの中身をざっと見たい時にアウトラインは非常に重宝します。Taglistはそのアウトラインを表示してくれます。zipファイルをダウンロードして回答したら適当にファイルを配置します。:Tlistとタイプすると別ウィンドウでアウトラインが表示されます。ジャンプしたい項目でエンターキーを押すとソースへジャンプします。うーん、便利ですね。
taglist.vim - Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc) : vim online

ctagsを入れて補完やタグ検索を強力にする

関数や定数を入力する際に、いちいち定義ファイルを参照するのはナンセンスです。そこで、IDEで使用していた入力補完ができるctagsを使用してみます。また、関数や定数へのジャンプも可能になるようなのでこちらも使ってみます。
Manpage of CTAGS日本語対応版
下記を参考にさせて頂いて、辞書の作成、.vimrcでの指定をおこないました。
Vim で PHP 関数の辞書を作成する方法についてのメモ

キー操作 動作
:ta tag タグを検索する
+ ] カーソル下のタグを検索する(ヒットすればジャンプ)
+ w + ] カーソル下のタグを検索する(ヒットすればウィンドウをオープンしてジャンプ)
+ T タグジャンプする前の位置へ戻る

tabstopって基本なんですね

vimrcのインデント周りの設定(タブを4→2)をいじっていたところ、思ったように動かなくなってしまいました。そこで、基本に立ち返り、設定を見直すことにしました。その際に"Vimのメモ - メモのメモ"を参考にさせてもらいました。

Pythonの文法チェックなどのおこなわせたい

チェックにはpylintを使用しているが、その都度下記のコマンドを実行するのは面倒です。そのため、何か別の方法を探してみます。(オプションの"-r n"で統計情報の出力をカットしています)

:!pylint -r n %

"vimでPythonのコードを書いているときにflymake?っぽい感じをだす | hexacosa.net"、"http://www.hexacosa.net/blog/detail/62/:title"を参考にさせてもらいます。
Emacsにflymakeというチェックの機能に関する機能が存在するようです。このflymakeをvimでも使えるようにする的なところが肝になりそうです。

現在調査中。

HTMLタグの自動補間がうまく動かない

HTMLを編集していたところ、さすがに閉じタグまでタイプしていては手間であるため、自動補間ができないか調べてみました。そうしたところ、簡単な方法はオムニ補間による補間らしいという所まで突き止めました。"http://seasaw.eek.jp/wordpress/?page_id=16"を参考にさせて頂きました。ついでなので、括弧の補間も入れてみました。.vimrcに以下を追加してみたがうまくいきません。うーん、問題はいずこか?

" 閉じタグ補間の設定
augroup MyXML
  autocmd!
  autocmd Filetype xml inoremap <buffer> </ </<C-x><C-o>
  autocmd Filetype html inoremap <buffer> </ </<C-x><C-o>
augroup END

" 括弧の自動補間の設定
inoremap { {}
inoremap [ []
inoremap ( ()
inoremap ” “”
inoremap ‘ ”
vnoremap { “zdi^V{z}
vnoremap [ “zdi^V[z]
vnoremap ( “zdi^V(z)
vnoremap ” “zdi^V”z^V”
vnoremap ‘ “zdi’z’

画面のサイズをコマンドで変更したい

使用しているvimはMacVimであるため、画面のサイズ変更は画面の右端をつまんで動かせば簡単に変更できます。しかし、几帳面な自分としては、数値できっちりサイズを指定したいというのが正直な所です。そのため、コマンドにて数値を指定して画面サイズを指定する方法を探します。設定は単純で、縦横それぞれを以下のコマンドで指定するだけです。"vimrcの設定メモ | QUALL - blogQUALL – blog"を参考にさせてもらいました。

:set columns=[数値]
:set lines=[数値]

過去に実行したコマンドをまた打ちたくない

メモ張として使用しているファイルのオープン/クローズを何度がする際に、なんどもオープンのコマンドを打つのが面倒です。たしかhistoryの機能があったはずなので、そちらを使うようにします。
"q:"でコマンドラインウィンドウの表示。"q?"で履歴の表示。"http://blog.kaihatsubu.com/archives/001374.htmlを参考にさせてもらいました。

文字列置換が一気におこなわれてしまう。置換を確認しながらおこなう方法はないの?

そもそも、置換を":%s"でおこなっていたことが問題でした。置換の基本的な使い方は次の通りです。
":<範囲指定>s/置換対象/置換文字列/<オプション>"。範囲指定で、"%"を使うと"1,$"と同義になります。オプションは、"g"が繰り返し、"c"が確認です。区切り文字は通常"/"ですが、":"などに変更することも可能です。
"管理者の第一歩、viのススメ (2/2):Windowsユーザーに教えるLinuxの常識(5) - @IT"を参考にさせて頂きました。

コードアシストがなくて困った

Eclipseでの開発ではコードアシストをバリバリに使用しているため、コード補完だけでは少々しんどいです。
pydictとうプラグインをインストールしました。

エクスプローラーでファイル探索をおこないたい

vimにはエクスプローラーは存在します。":e"でディレクトリを指定するだけでエクスプローラーは表示されます。
エクスプローラーでは、-(一つ上え)、i(詳細表示、表示形式を変更)、s(ソート)を良く使います。c(カレントに設定)は使いどころがまだ把握できていません。

":n"だと画面が分割される?

新しいファイルを作成しようとして":n"を使用してみましたが、うまくいきませんでした。使用するのであれば、":edit"か":new"でした。":new"だと新しいwindowがオープンするため、使いどころを考える必要があります。

行頭でのtab入力のインデントがおかしい

行頭にてtab入力をすると、tabが二つ入力されてしまいました。shiftwidthを設定していなかったために起きた事象でした。shiftwidth=4とすることでtabが一つ入力されるようになりました。smarttabを設定している場合は、shiftwidthも正しく設定するように気をつけます。