スパム対策として書込み時にID/PWを要求されますが、ローマ字で ほげ/ホゲ で書き込めるようになります。

ここには再編前のFrontPageに書き込まれていたtipsを保存しています。

バッファ・ウィンドウ

バッファ切り替え基本コマンド

:b filename
:sb filename        " ウィンドウ分割して開く
:vert sb filename   " 垂直分割して開く
:bn                 " 次のバッファ
:bp                 " 前のバッファ

:b や :sb は<Tab>でファイル名補完ができる.~ そのとき :set wildmenu していれば候補リストが表示される。
さらに補完しなくても

:b ma

でファイル名に ma を含むバッファを開いてくれる.

カーソル下のファイル名を開く

gf

前回の vim 終了時最後に編集していた場所を開く

   '0

その前は'1、その前は '2 ... '9 まで保存されている。 それぞれのマークがどこを示しているかを見るには

   :marks

カーソル移動

現在行と同じインデントの前後の行へジャンプ

nn { :call search ("^". matchstr (getline (line (".")+ 1), '\(\s*\)') ."\\S", 'b')<CR>^
nn } :call search ("^". matchstr (getline (line (".")), '\(\s*\)') ."\\S")<CR>^ 

Python なんかで便利。

編集

選択範囲の前後にいっせいに文字を挿入

矩形選択モードで I や A を使うと選択範囲全体に一括して文字を付け加えられる。 矩形選択モードに入るには、ノーマルモードから C-v またはヴィジュアルモードで C-v。

インデントの深さを合わせて貼り付け

p]

はカーソルのある行と同じインデントにして貼り付け。

nnoremap p p=`]

このマッピングは { のネストを考慮し、適切なインデントにして貼り付け。
`] で最後に貼り付けた場所の終わりまで移動してくれるので、そこまで = でフォーマッティングしている。

引用符つき貼り付け

普通にputした後に

:'[,']s/^/>/

検索

KaoriYa?版でなくても migemo

KaroiYa?製パッチを導入していなくても migemo 検索できる。 KoariYa?から migemo.vim だけとって来て plugin ディレクトリにコピーする。

<leader>mi

で MIGEMO プロンプトが出るので、「nyuuryoku」等を入力する。

表示

ハイライトの確認

:hi と同じ結果を新しいウィンドウに表示する。

so $VIMRUNTIME/syntax/hitest.vim

いま開いているファイルをHTML化したい

別ウィンドウにHTML化したバッファを生成する

so $VIMRUNTIME/syntax/2html.vim

ページャとして使う

シェルやコマンドプロンプトから

# hoge | vim -

等として使う。

プログラミング支援

C/C++ 前後の関数へ移動(改良版)

基本的に[ [ , ] ] と同じだが、1つ上が空行になっている行を先頭行とみなし、先頭行が画面最上になるようにして移動する。

noremap <C-p> [[?^\s*$<CR>jz<CR>
noremap <C-n> /^\s*$<CR>]]?^\s*$<CR>jz<CR>

このように連続して行う操作は、2キーのシーケンスより、CTRL+1文字にマップした方が使いやすいと思う。

C/C++で関数を範囲選択

int
foo(char mychar,
    int myint,
    double* myarray,
    int mask = DEFAULT)
{ //...
} 

となっているとき,関数内のどこかにカーソル置いて実行すると,int から最後の } までを範囲選択してくれるマッピング。 ただし int の上が空行になっている必要がある。

nnoremap vf ][v[[?^\s*$<CR>

for などのブロックを選択。

nnoremap vb /{<CR>%v%0

for, if, while などがある行にカーソルを置いて、これを実行すると、そのブロックを選択する。
実行後のカーソル位置が実行前と同じ行に来るようにしている。

.c ←→ .h を切り替えるスクリプト

Alternate Files quickly (.c --> .h etc)
http://www.vim.org/scripts/script.php?script_id=31
foo.c を編集中に :A すると対応する foo.h を開く。逆も同じ。
:AS でウィンドウを分割して開く。:VS で垂直分割して開く。
.cpp, .cc, .cxx, .hpp などにも対応している。

.h 作成時に自動的に #ifndef 〜 #endif を挿入する

au BufNewFile *.h call IncludeGuard()
function! IncludeGuard()
   let fl = getline(1)
   if fl =~ "^#if"
       return
   endif
   let gatename = substitute(toupper(expand("%:t")), "\\.", "_", "g")
   normal! gg
   execute "normal! i#ifndef " . gatename . "_INCLUDED"
   execute "normal! o#define " . gatename .  "_INCLUDED\<CR>\<CR>\<CR>\<CR>\<CR>"
   execute "normal! Go#endif   /* " . gatename . "_INCLUDED */"
   4
endfunction 

タグジャンプ色々

ctags *.c

として tags ファイルを作っていれば C-] でカーソル下の単語のタグジャンプができるが、これをプレビューウィンドウというウィンドウで開くこともできる。

:tag  タグ名    " C-] と同じ
:ptag タグ名    " C-W } と同じ
                " tag と同じ部分をスプリットして表示
                " しかもカーソル位置は現在のまま
:pc             " プレビューウィンドウを閉じる。C-W C-Z と同じ。
C-W ]           " スプリットしてタグジャンプ(C-])

プレビューウィンドウの高さは

            set previewheight=12

という感じであらかじめ設定できる。

Doxygen コメントのテンプレートを作成するスクリプト

DoxygenToolkit?.vim
http://www.vim.org/scripts/script.php?script_id=987

int
  foo(char mychar,
      int myint,
      double* myarray,
      int mask = DEFAULT)
{ //...
} 

となっているとき、1行目か2行目にカーソルを置いて:Doxすると

/**
* @brief
*
* @param mychar
* @param myint
* @param myarray" *
* @return
**/ 

を挿入する.

Ruby 版:&ref(): File not found: "rubydox.vim" at page "再編前のtips"; ほとんど Ruby だけど、カスタマイズしやすいかと。

C/C++ 関数一覧

現在のファイルにある関数の一覧を表示する。
ctags を使う方法
VimTip? 79: How to use :grep to get a clickable list of function names
http://www.vim.org/tips/tip.php?tip_id=79
エラーウィンドウに出力するので,リストの上で<CR>すれば定義位置にジャンプしてくれる。
実行すると自動的にカレントバッファを保存するので注意。

function! ShowFunc()
   let gf_s = &grepformat
   let gp_s = &grepprg

   let &grepformat = '%*\k%*\sfunction%*\s%l%*\s%f %*\s%m'
   let &grepprg = 'ctags -x --c-types=f --sort=no -o -'

   write
   silent! grep %
   cwindow

   let &grepformat = gf_s
   let &grepprg = gp_s
endfunc

簡易版

   :g/^[A-z_]\+.*(.*\_p{

単に [A-z_].* → (.* → 改行を含む空白 → { を検索しているだけ。

〜を知るには?

読み込んでいるスクリプト名を表示

:scriptnames

オプションがどのファイルで定義されたかを知る

:verbose set tabstop?

カーソルの下の文字のハイライティンググループを調べる

:echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"

ヘルプの見つけ方

次のようにキーワードを入れれば、求めるヘルプに正確にたどりつける。

:h CTRL-A       " ノーマルモードでの C-a の機能
:h i_<Up>       " インサートモード
:h v_gv         " ヴィジュアルモード
:h c_<Del>      " コマンドライン編集モード
:h :sb          " コマンドラインコマンド
:h 'hidden'     " hidden オプションの機能
:h  E37         " エラーメッセージの詳細 E37: No write since last change (use ! to override)
:h map-<silent> " :map <silent> の意味

ちなみにキーワードも<Tab>で補完ができる。
日本語ヘルプは少々バージョンが古いのでキーワードが見付からない場合もあります。

その他

vim の二重起動を禁止する

gvim.exe --remote-silent 

スクリプト内で IME を on/off する

:let &iminsert=2

0 = off、2 = on 。

ステータスラインでメニューを使う

gvimと同じメニューをコンソールでも使うことができる。詳細は

   :h console-menus

このメニュー操作には cmap でのマッピングが有効になる

まぁ慌てるな

easter egg

   :help!

「E478: 慌てないでください」

ウィンドウズのコマンドプロンプトでも vimtutor したい

vimtutor.bat -console

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-10-14 (火) 01:13:17 (1286d)