と記述しておく。 他にもいろいろな設定が出来るがここでは自分が設定している内容を示す。 Linuxとcygwin(cygterm)さらにはWindows用の vim で共通で使えるようにしてある。set number
" -----------------
" vimrc for janus
" -----------------
" Source other vim command
if has("gui_win32")
if $TERM == ""
set shell=$BASHPATH\ --login
else
set shell=$BASHPATH
endif
set shellslash
" Add .vim directory to runtimepath
set runtimepath+=$HOME\.vim
" Windows setting for Access permissions
set backupcopy=yes
set nobackup
endif
" Common options
syntax on
"set incsearch
"set nobk
"set number
"set smartcase
"set wildmode=list
set autoindent
set backspace=indent,eol,start
set encoding=japan
set grepprg=search\ $*
set hlsearch
set iminsert=0
set imsearch=0
set listchars=eol:$,tab:>-
set nowrap
set ruler
set shiftwidth=4
set shortmess+=I
set showcmd
set tabstop=4
set visualbell
set scrolloff=2
if has("gui_win32")
set guifont=MS_ゴシック:h12:cSHIFTJIS
set printfont=MS_ゴシック:h10:cSHIFTJIS
" autocmd GUIEnter * simalt ~x
" autocmd GUIEnter * winpos 100 0
autocmd GUIEnter * winsize 80 52
else
au BufNewFile,BufRead fstab setf fstab
if has("gui_running")
if $LANG == "ja_JP.eucJP"
inoremap :set iminsert=0
if $HOSTNAME == "vaio"
" set guifontset=-alias-fixed-medium-r-normal-*-*-160-*-*-c-*-jisx0201.1976-0
set printfont=-alias-fixed-medium-r-normal-*-*-160-*-*-c-*-jisx0201.1976-0
set guifont=gothic\ Medium\ 14
else
set guifontset=-alias-fixed-medium-r-normal-*-*-160-*-*-c-*-jisx0201.1976-0
set printfont=-alias-fixed-medium-r-normal-*-*-160-*-*-c-*-jisx0201.1976-0
endif
set imactivatekey=S-space
endif
autocmd GUIEnter * winsize 80 45
else
set mouse=a
endif
endif
colorscheme jancol
" Key mapping for search
vnoremap y/\V=substitute(escape(@",'/'),"\n","\\\\n","g")/
vnoremap y?\V=substitute(escape(@",'/'),"\n","\\\\n","g")?
nnoremap /
nnoremap ?
" for autocmd
if has("autocmd")
filetype plugin indent on
autocmd FileType text setlocal textwidth=78
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
autocmd BufEnter * :cd %:p:h
endif
" for local setting
set tags+=../tags,../../tags,../../../tags
alias vi='vifunc'
function vifunc()
{
if [ $OSTYPE == cygwin ]; then
if [ $TERM == cygwin ]; then
env HOME=$DHOME LANG=ja gvim `dospath.pl $@`
else
if [ $CYGTERM ]; then
env HOME=$DHOME LANG=ja gvim `dospath.pl $@`
else
env LANG=ja vi $@
fi
fi
else
if [ -z $SSH_TTY ]; then
env LANG=ja_JP.eucJP gvim $@
else
command vi $@
fi
fi
}
#!/bin/bash
function usage()
{
echo "usage : search [-option] string"
echo "サブディレクトリを含めて string を検索します"
echo " -f シンボリックリンクをたどります."
echo " -g grepコマンドと同じにします."
echo " -n PATTERN ファイル名パターンを指定します."
echo " -C DIR 検索対象パスを指定します."
exit
}
OPT_PATH=.
while getopts ":fgn:C:" option
do
case $option in
f ) OPT_FL="-follow"
;;
g ) OPT_GREP=YES
;;
n ) OPT_PTN=$OPTARG
;;
C ) OPT_PATH=$OPTARG
;;
? )
usage
;;
esac
done
shift $(($OPTIND-1))
if [ $# -eq 0 ]; then
usage
fi
if [ "$OPT_GREP" = "YES" ]; then
if [ $# -eq 1 ]; then
grep -n $1 *
else
grep -n $@
fi
else
if [ ! -z "$OPT_PTN" ]; then
find $OPT_PATH $OPT_FL -name "$OPT_PTN" -exec grep -nH "$1" {} \;
else
find $OPT_PATH $OPT_FL -exec grep -nH "$1" {} \;
fi
fi
このスクリプトを vim の grep コマンドに対応させることが可能です。
.vimrc に次の行を記述してます。search スクリプトは $HOME/bin にあるとします。
すると :grep で使用されるコマンドは search になります。 サブディレクトリ以下のファイルを対象に文字列検索も vim のみで簡単に行えるようになります。set grepprg=$HOME/bin/search\ $*
ビジュアル選択時(v)に F3 を押すとその文字を検索します。^@ などキー入力が困難なコントロール文字を 検索(もしくは置換)対象にするときに重宝します。 この場合、y でヤンクし /\V で 検索対象を正規表現無しに設定しています。 <C-r>= で内部関数を呼び出します。@" にはヤンクされた文字列が格納されていて / をエスケープし 改行をエスケープ後の文字で置換した結果を検索文字にしています。 特に <C-r>= は置換のときも使える技で重宝します。vmap <F3> y/\V<C-R>=substitute(escape(@",'/'),"\n","\\\\n","g")<CR>/<CR>