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

関数一覧表示(複数言語対応)

メッセージ

Emacs の navi.el(関数の一覧表示とジャンプ)で使っている
正規表現を vim に翻訳してみました。
http://www.ne.jp/asahi/love/suna/pub/soft/navi.el/index.html

navi.el は GPL なので多分これも GPL になります。

" This program is free software; you can redistribute it and/or modify
" it under the terms of the GNU General Public License as published by
" the Free Software Foundation; either version 2 of the License, or
" (at your option) any later version.
"
" This program is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
" GNU General Public License for more details.
"
" You should have received a copy of the GNU General Public License
" along with this program; if not, write to the Free Software
" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

function! Navi()
  if &ft ==? "c" || &ft ==? "cpp"
    vimgrep /^[^ \t#/\\*]\+[0-9A-Za-z_ :\t\\*]\+([^;]*$/j %
  elseif &ft ==? "lisp" 
    " defun のみ検索
    vimgrep /^[ \t]*(defun[ \t]\+.*$/j %
    " Emacs Lisp (defvar なども検索) 
    "vimgrep /^[ \t]*(defun[ \t]\+.*$/j %
  elseif &ft ==? "perl"
    vimgrep /^[ \t]*sub[ \t]\+.*$/j %
  elseif &ft ==? "ruby"
    vimgrep /^[ \t]*\(class\|module\|def\|alias\)[ \t]\+.*$/j %
  elseif &ft ==? "python"
    vimgrep /^[ \t]*\(class\|def\)[ \t]\+.*$/j %
  elseif &ft ==? "javascript"
    vimgrep /^[ \t]*function[ \t]\|[a-zA-Z_$][a-zA-Z0-9_$]*[ \t]*[=:][ \t]*function[ \t]*(/j %
  elseif &ft ==? "sh"
    vimgrep /^[ \t]*\(\h\w*[ \t]*()\|function[ \t]\+\h\w*\)/j %
  elseif &ft ==? "html"
    vimgrep /\c^\([ \t]*<h[123456].*\|[ \t]*<head.*\|[ \t]*<body.*\|[ \t]*<form.*\)$/j %
  elseif &ft ==? ""
    "Text (「1.」型の箇条書き)
    vimgrep /^[ \t]*[1234567890]\+[\.]\+.*$/j %
  elseif &ft ==? "tex"
    vimgrep /^\(\\chapter.*\|\\section.*\|\\subsection.*\|\\subsubsection.*\)$/j %
  elseif &ft ==? "pascal" 
    vimgrep /\c^procedure.*$/j %
  elseif &ft ==? "java"
    vimgrep /^[ \t]*[^#/\*=]\+[0-9a-zA-Z_ \t\*,.()]\+{[^;]*$/j %
  elseif &ft ==? "vb"
    vimgrep /\c^\(private\|public\|sub\|function\)[ \t]\+.*$/j %
  elseif &ft ==? "diff"
    "diff (unified format)
    vimgrep /^@@[0-9 \t,+-]\+@@$/j %
  else
    echo "This filetype is not supported."
  endif
  cw
endfunction

使い方:

:call Navi()

とすると、ファイル形式に応じて現在のバッファから関数定義を検索する。

ShowFunc?.vim
ctags を使って同じことをするスクリプトもある。
ShowFunc?.vim
Creates a list of all tags / functions from a window, all windows or buffers
http://www.vim.org/scripts/script.php?script_id=397
インストール
ShowFunc?.vimを~/.vim/pluginにコピー。
使い方
F1を押す。




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