Skip to content

Instantly share code, notes, and snippets.

@oooooooo
Last active August 4, 2017 12:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oooooooo/7704229 to your computer and use it in GitHub Desktop.
Save oooooooo/7704229 to your computer and use it in GitHub Desktop.
Vim

目次

Vim

プログラマのスキルと、エディタのスキルは比例します(要出典)。

いきなりは覚えられないので、一日 2, 3 個、hjkl を減らす新しいコマンドを覚えましょう。

自動保存

保存を忘れて作業が消えた、ということがないように自動保存。こまめに git していれば戻すのも問題なし。

set autowrite
autocmd CursorHold *  wall
autocmd CursorHoldI *  wall

検索

インクリメンタル検索をしましょう。

/ ... n で次、N で前
# ... カーソル位置にある単語を検索

:vimgrep /^sub/ *|cw      ... 現在開いているファイルの関数一覧
:vimgrep /検索文字/ **|cw ... 全ファイル検索

置換

:%s/foo/bar/gc         ... ファイル全体の置換&確認
:%s;/usr/local;/usr;gc ... / の代わりに ; を使う。パスの置換に便利

補完

文字を途中まで入力したら C-p で、残りを補完することができます。

補完することで typo が減り、ケアレスミスなバグが減ります。

C-p ... 前の候補へ
C-n ... 次の候補へ

Shougo/neocomplete.vim はもっと高度な補完を提供します。

画面分割

vim だけでなく screen で分割してログを見ると便利。

:sp ... 横分割
:vs ... 縦分割

C-w の後に hjkl ... その方向にウィンドウ移動
C-w w ... 次のウィンドウへ
C-w p ... 前のウィンドウへ

C-w o ... 現在のウィンドウ以外すべて閉じる
C-w q ... 現在のウィンドウを閉じる

QuickRun

プログラの書かれた画面で C-r すると実行できます。 実行のためにシェルに戻って perl foo.pl 不要になります。 サンプル・プログラムを書いて動かすときに便利。

ctrlp

「:e **/ファイル名」して深い場所にあるファイルを開くことができますが、ctrlp は候補を見ながら絞り込めるので便利です。

使い方は C-p するだけ。

ctrlp.vimの使い方まとめ - Qiita [キータ]

テキストオブジェクト

"hello, world" や <h1>hello, wolrd</h1> の hello, wolrd を削除したいことはよくある。

di の次に t ( タグ ) や ' を入力することで hello, wolrd を消すことができます。

dit    <h1>hello, world</h1> -> <h1></h1>
di"    "hello, world"        -> ""
di'    'hello, world'        -> ''
dib    (hello, world)        -> ()
diB    {hello, world}        -> {}

di を da にすると外側の括弧も消えます。

tpope/vim-surround はもっといろいろな操作ができます。

Align

リーダブルコードの観点から => や = でコードを並べることは大切。

$apple => "123"
$book => "4";
$cat => "5";
$dragon => "6789";

V で選択し、:Align して => をすると、=> で綺麗に整形されます。

$apple  => "123"
$book   => "4";
$cat    => "5";
$dragon => "6789";

vim-scripts/Align

タグジャンプ

ソースコードの該当箇所にジャンプ。

$ cd /usr/ports/devel/ctags
$ sudo make install

ソースのあるフォルダに移動。

$  exctags -R

メソッドや関数で C-] でジャンプし、C-t で戻る。

perl で書かれた Bugzilla で試す。

$ wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-4.4.1.tar.gz
$ tar xfz bugzilla-4.4.1.tar.gz
$ cd bugzilla-4.4.1
$ exctags -R

vimdiff

diff より vimdiff が見やすいです。

$ vimdiff oldfile newfile

vimdiff はコードの取り込みができます。

]c ... 次の差分へ
[c ... 前の差分へ
do ... 現在のバッファに、他のバッファからコピー
dp ... 現在のバッファから、他のバッファにコピー

プラグイン

入門以外の操作方法

情報源

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment