Posts Tagged: vim

普段使いそうで使わない少し使えるVimコマンド

メインのエディタはVimをよく使います。
使い始めて2年くらい経ちますが、そこまで設定やプラグインなどに凝っているわけでは無いのでVimラブな人から見ればまだまだライトユーザでしょう。
普段使っていて不便だと感じた部分だけ直してどうにか対応できていたのであまり凝った事はしませんでした。
というか凝りだすとキリが無いので^^

しかしたまにVimについて調べると標準のコマンドの中にも今まで使っていなかったけれど地味に便利なものも沢山見つけられます。
でもそういうコマンドって最初は意識して使ってやらないとまた直ぐに使わなくなって忘れちゃうんですよねw
なので(あくまで自分的にw)今まで使っていなくて便利だからこれから使っていきたいなというコマンドをメモしておきます。
今後は見つけ次第このページを更新するかもしれません。

  • ), ( と }, {
    • ), (は次または前の文の先頭へ移動、}, {は次または前の段落の先頭へ移動、ということらしいが個人的にあまり動きに違いが感じられず殆ど同じ用途で使ってる。}, {の方が押しやすいかも。
  • .
    • 前の動作の繰り返し。意外と使える。
  • z ENTER
    • カーソルのある行を画面の一番上に表示する。
  • m x
    • 現在の位置をxとしてマークする。
  • `x
    • マークxの位置へ移動する。
  • ‘x
    • マークxの行頭へ移動する。
    • 直前のマークへ移動する。
    • 直前のマークの行頭へ移動する。
  • cw
    • 単語を置き換える。
    • たとえば、”|word word”とかでwcと押すと”| word”ってなってINSERTモードになる。(※|←カーソル)
  • C
    • 行末まで変更する。
    • カーソル位置から行末まで置き換える。
  • c 移動コマンド
    • 移動コマンド分を置き換える。
    • 例えば”c+Shift G”だと今いる位置から行末までが削除されてINSERTモードになる。
    • 置き換え系のコマンドで一番汎用的かも。
  • R
    • 複数文字を上書きする。キーボードのINSERTキーを押してしまった時のような動作か。
  • d 移動コマンド
    • 移動コマンド分を削除する。
  • “np
    • バッファ番号nのテキストをペーストする。
    • 直前9件まで対応できる。
  • Shift + J
    • 行を連結する。

PerlもPythonも書きやすい.vimrc

最近Pythonに触れる機会が増えてきました。
今まで主にPerlをいじっていたのでVimのインデントの設定などがPerl向けになっており、
これまでのVimの設定でPythonを書こうとするとなんとも歯がゆい思いをすることに。

ファイルタイプでVimの設定を分けないといけないと思い、その時のメモ。

方法としては大きく2種類。

  1. ~/.vimrcだけで済ませる方法
  2. ファイルタイプで専用の設定ファイルに振り分ける方法

1. ~/.vimrcだけで済ませる方法

メインで使っている~/.vimrcをちょこっと変えて対応するなら以下だけで済む。

" For Perl
set autoindent
set cindent
" cindentでのインデントスタイルを設定する(1s=shiftwidthの1倍のインデント量)
set cinoptions=1s
" 再インデントを行う場合の条件
set cinkeys=0{,0},:,!^F,o,O,e
set formatoptions=tcqr
" タブの設定
set ts=4 sw=4 sts=0
set expandtab
set backspace=2

" For Python
autocmd FileType python setl nocindent
autocmd FileType python setl smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd FileType python setl tabstop=8 expandtab shiftwidth=4 softtabstop=4

 

2. ファイルタイプで専用のファイルタイプに振り分ける方法

もっとファイルタイプが増えて、それぞれ別の設定を適用したいならこちらで対応したほうがわかりやすいかもしれない。
(今はPerlとPythonくらいなので1.でいいや^^;)
ファイルタイプで設定をわけるプラグインを使用して、ファイルタイプ別にそれぞれ用意した設定ファイルを読み込ませる。
このプラグインはデフォルトで入ってるはずなので以下のように”filetype plugin on”とするだけで使えるようになるはず。。。
設定ファイルはruntimepath/ftplugin/ディレクトリ以下に”ファイルタイプ.vim”という名前で保存する。
今回はruntimepathに~/.vimを設定し、python.vimという設定ファイルを読み込ませる。

<~/.vimrcの内容>

" filetypeプラグインを使用する
filetype plugin on
set runtimepath^=$HOME/.vim

<runtimepath/ftplugin/python.vimの内容>

set nocindent
set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
set tabstop=8 expandtab shiftwidth=4 softtabstop=4

参考
http://d.hatena.ne.jp/over80/20090305/1236264851
http://d.hatena.ne.jp/teppeis/20080705/1215262928
viでファイルタイプごとの設定