投稿

2月, 2014の投稿を表示しています

君の知らないVimレジスター

この記事は Vim Advent Calendar 2013 90日目の記事になります。
どうも、一足早い春休みに突入したもぷりです。
しかし春と言っても、まだまだ、寒いですねー。
先日からneovimの話題でもちきりですが、Vim本体についての紹介です。


今回はレジスタの話です。
まずは、ヘルプを見てみましょう。
:help registers
レジスタには 9 種類ある:*registers* *E354*
1. 無名レジスタ ""
2. 10個の番号付きレジスタ "0 から "9
3. 小削除用レジスタ "-
4. 26個の名前付きレジスタ "a から "z または "A から "Z
5. 4個の読み取り専用レジスタ ": と ". と "% と "#
6. expression 用レジスタ "=
7. 選択領域用レジスタ "* と "+ と "~
8. 消去専用レジスタ "_
9. 最終検索パターン用レジスタ "/
意外と種類がありますね。 詳しくはそのままヘルプを読めばわかると思います。
そして、このレジスタはなんとインサートモードから呼び出すことが可能です。 やり方はインサートモードで <C-R> レジスタ です。
これを使ったテクニックを紹介します。 まずは、実践Vimにも記述されているものです。 <C-R>={何か式} インサートモードにて入力すると、コマンドモードに=が現れて続けて入力ができます。
例えば、四則演算などの簡単な式を埋め込みたいときなどに有用です。
メモリアドレスの計算なんかしたいときなど
「<C-R>=0xA000 - 0x0909」と打てば「38647」と表示されます。
おっと、これは10進数です。メモリアドレスなんだから当然16進数がいいですね。

ここで、入力できるのは計算式ではなくVimにとっての式であるというのが便利ポイントです。
「<C-R>=printf('0x%x', 0xA000 - 0x0909)」とすると「0x96f7」で入力されます。


次によく使うのは「*」と「+」レジスタの2つです。

.vimrcでありがちなミスとかおすすめとか

この記事は Vim Advent Calendar 2013 82日目の記事になります。
\アドベント!/
今回は、みんなの大好きなvimrcの話です。 人のvimrcを見ているととても面白いですが、「あ、これはこうしたほうがいいよな〜」なんて思うことが稀にあります。
そんな間違いや個人的にこうしたほうがいいよって言うものをまとめて見ました。
1. ファイル形式別機能の有効無効設定これはかなり頻繁に見かける間違いです。 間違い
filetype plugin indent on
filetype indent on 正しい

filetype plugin indent on  これはhelpを引けばわかります。 :help :filetype-overview 有効無効の設定は一括でできます。


2. カラースキームとシンタックスの有効
これは自分もハマりました。
間違い colorscheme mopkai
syntax enable
正しい syntax enable
colorscheme mopkai
順番が大事なのです、逆にするとうまく色がつかない場合があります。 原因は不明です…


3. インデント この記事を書いていて自分のvimrcのミスに気が付きました
間違い set smartindent
set cindent

正しい set smartindent or set cindent これはこちらに書いてあります。 :help smartindent smartindentはcindentかindentexprが有効なときは意味が無いようです。


4. nocompatibleset nocompatible これはvimrcを書き始めたらまず書くと思います。 別に間違いではありませんが、これは不要です。 :help compatible を見てみると、「既定では オン、ファイルvimrcまたはgvimrcが発見されたらオフ」とあります。 つまり、vimrcを書いた時点でnocompatibleになります。

5. 複数の設定値set backspace=2
set autoindent
set cindent
set expandtab    
set shiftwidth=4
これは以下と同様です。 set backspace=2 autoindent cindent expandtab shiftwid…

Vimの:makeの引数補完機能付き:Makeを作った。

イメージ
この記事は Vim Advent Calendar 2013 80日目の記事になります。 書かぬなら、私が書こう、アドベント
はい、もぷりです。 今回も、自作Pluginの紹介です。
Vimには:makeというコマンドがあります。 意外と知らない人もいるかも知れませんので軽く説明を。
このコマンドはいろいろ設定出来るのですが、何も設定しない状態で実行すると
$ make
を実行したのと同じ動作をします。
つまり、Vimを終了せずとも自分で書いたMakefileを実行出来るわけです。 これだけでも結構便利ですね。
しかし、自分の環境では:makeはファイル名の補完しか行ってくれません。 Makefileは生成ファイル名を書くのだからこれでもまあ、悪くはないのですが
$ make clean $ make all $ make run
とかの.PHONYをつけるようなターゲットも補完してほしいわけです。
更に、READMEなどもファイルなので候補に上がりますが、個人的に出てきてほしくないです。
なのでPluginを作りました。 こちらです。
mopp/makecomp.vim
ちょっとわかりづらいですがこんなかんじで動きます。
これでmakeしやすくなりましたー