« 連番によるバックアップ | トップページ | windowsで必ず入れるフリーソフト »

2008年2月17日 (日)

windowsのgvimの設定

 function MakeNewWindow()
  let s:cmdstr = '!start gvim.exe -R "' . expand("%:p") . '" +'. line(".") 
  execute s:cmdstr
  return
endfunction
function ExplorerStart()
  let s:dir = expand("%:p:h")
  let s:directory=substitute(s:dir,"/","\\","g")
  execute "!start explorer /e,".s:directory
endfunction
function Iestart()
  let url=expand("%:p")
  execute "!start \"C:\\Program\ Files\\Internet\ Explorer\\IEXPLORE.EXE\"\ " . url
endfunction
function ZeroCount(strNum)
  let s:slen = strlen(a:strNum)
  let s:i = 0
  let s:zeroCount = 0
  while s:i < s:slen
    if a:strNum[s:i] !~ "0"
      break
    endif
    let s:zeroCount = s:zeroCount+1
    let s:i = s:i + 1
  endwhile
  return s:zeroCount
endfunction
function GetNextNum(moto,inc)
  let s:digits = a:moto
  let s:strNum = ZeroCount(s:digits)
  let s:i = 0
  let s:digits = strpart(s:digits,s:strNum)
  let s:chrCnt = strlen(s:digits)
  let s:digits =s:digits+a:inc
"桁上がりした
  if s:strNum != 0
    if strlen(s:digits) > s:chrCnt
      let s:strNum = s:strNum - 1
    elseif s:chrCnt > strlen(s:digits)
      let s:strNum = s:strNum + 1
    endif
  endif

  while s:i < s:strNum
    let s:digits = "0" . s:digits
    let s:i = s:i + 1
  endwhile
  return s:digits
endfunction
function EditNext(inc)
  let s:nowFN =expand("%:r")
  let s:fnStr=substitute(s:nowFN,'\(\D*\)\d\+$',"\\1","g")
  let s:fnNum =substitute(s:nowFN,'\D*\(\d\d*\)$',"\\1","g")

  let s:nowNum = GetNextNum(s:fnNum,a:inc)

  let s:newFN = "e ".s:fnStr.s:nowNum.".".expand("%:e")
  execute s:newFN
  return
endfunction
function Autoftp()
  let s:nowDir = substitute(expand("%:p:h"),"c:\\(.*\\)$","\\1","")
  let s:nowFile = expand("%:p")

  let s:fn  = "c:\\ftpcmd.txt"
  if filereadable(s:fn)
    let s:ret = delete(s:fn)
  endif
 
  execute "sp ".s:fn
  call LineAdd("open サーバのIP")
  call LineAdd("user")
  call LineAdd("ユーザ名")
  call LineAdd("パスワード")
  call LineAdd("ascii")
  call LineAdd("cd ".s:nowDir)
  call LineAdd("put \"".s:nowFile."\"")
  call LineAdd("quit")
  execute "w"
  execute "q"
  execute "!ftp -n -s:".s:fn
endfunction
function Ftpget()
  let s:nowDir = substitute(expand("%:p:h"),"c:\\(.*\\)$","\\1","")
  let s:nowFile = expand("%:t")

  let s:fn  = "c:\\ftpcmd.txt"
  if filereadable(s:fn)
    let s:ret = delete(s:fn)
  endif
 
  execute "sp ".s:fn
  call LineAdd("open サーバのIP")
  call LineAdd("user")
  call LineAdd("ユーザ名")
  call LineAdd("パスワード")
  call LineAdd("ascii")
  call LineAdd("cd ".s:nowDir)
  call LineAdd("get \"".s:nowFile."\"")
  call LineAdd("quit")
  execute "w"
  execute "q"
  execute "!ftp -n -s:".s:fn
endfunction
function LineAdd(linestr)
  let s:lineCount = line("$") - 1
  let s:ret = append(s:lineCount,a:linestr)
endfunction
function Diffs(fname)
  let s:cfilename = a:fname . '\' . expand("%:t") . "~"
  let s:cmdstr = "diffsplit " . s:cfilename
  execute s:cmdstr
  return
endfunction
set vb t_vb=
set guioptions+=a
set guioptions-=T
set guioptions-=m
set guicursor=a:blinkon0
set shellslash
set backup
set backupdir =c:/tmp
ab diffs call Diffs("c:/tmp")<CR>
au BufEnter * execute ":lcd " . expand("%:p:h")
autocmd BufRead *.txt nm <C-n> :call EditNext("1")<CR>
autocmd BufRead *.txt nm <C-p> :call EditNext("-1")<CR>
colorscheme torte
ab vimed sp ~/_gvimrc
nm <C-j> :call MakeNewWindow()<CR>
cm <C-o> call ExplorerStart()<CR>
let $PATH=$PATH.";c:/cygwin/bin"

解説
MakeWindow
現在開いているファイルに対して、新しくgvimを立ち上げて、読み取り専用で開く。先に立ち上げたvimで内容を更新しても、新しく立ち上げたウィンドウのほうは変更されないため、更新内容を確認しつつ編集するのに便利。

ExplorerStart
今開いているファイルのディレクトリをエクスプローラで開く。
ファイル名を変更したり、コピーをしたりするのに便利。

Iestart
今開いているファイルをInternetExplolerで開く。HTMLやXMLを編集している時に便利

ZeroCount(Number)
先頭をゼロパディングされた数字の先頭の0の数を返す。

GetNextNum(moto,inc)
motoにinc分の数字を増減させた数字を返す。ゼロサプレスされた数字はゼロサプレスを考慮して返す。incに負の数が与えられた場合は減少。

EditNext(inc)
現在のファイル名の末尾の数字をinc分増減したファイル名を返す。電信八号(メールの読み書きに好きなエディタが使えるメーラ)のファイル形式が数字.txtのため、次に受信したファイルを読みたい場合に、call EditNext(1)のように呼び出すことで次のファイルを読める。call EditNext(-1)で前のファイルを読める。

Autoftp ※サーバ名 ユーザ名 パスワードを実際に合わせる必要あり。
現在編集しているファイルをサーバにアップロードする。
その規則はwindows側のc:\直下をサーバの/(ルート)に変換してファイルをアップロードする。
例えば、c:\www\public\html\index.htmlを編集している状態で:call Autoftpを実行すると、サーバの/www/public/html/index.htmlにアップロードする。

Ftpget()
Autoftpとは逆にサーバから現在編集しているファイルをダウンロードする。
現在編集しているファイルが強制的にサーバのファイルに置き換えられるため要注意

LineAdd(string)
stringを現在開いているバッファの最後に追記する。

Diffs(バックアップディレクトリ名)
現在編集しているファイルとバックアップディレクトリにあるファイル名~とのdiffsplitを行う。

ビジュアルベルをOFF
set vb t_vb=
ビジュアルモードで選択している箇所をクリップボードにコピー
set guioptions+=a
ツールバーを表示しない。
set guioptions-=T
メニューバーを表示しない。
set guioptions-=m
カーソルの点滅を行わない。
set guicursor=a:blinkon0
パスの区切り文字を"\"ではなく"/"にする。
set shellslash
ファイルを変更した際にバックアップを行う。
set backup
バックアップファイルを置くディレクトリ名
set backupdir =c:/tmp
:diffsのみで現在のファイルと変更前のファイルとのdiffをとる。
ab diffs call Diffs("c:/tmp")<CR>
編集しているファイルの場所をカレントディレクトリとする
au BufEnter * execute ":lcd " . expand("%:p:h")
拡張子が.txtのファイルの場合Ctrol+nで現在のファイル名+1を開く(電信八号用)
autocmd BufRead *.txt nm <C-n> :call EditNext("1")<CR>
拡張子が.txtのファイルの場合Ctrol+pで現在のファイル名-1を開く(電信八号用)
autocmd BufRead *.txt nm <C-p> :call EditNext("-1")<CR>
テーマカラーをtorteに設定
colorscheme torte
:vimedで新しいバッファにgvimの設定ファイルを開く
ab vimed sp ~/_gvimrc
:Ctrol+jでもうひとつ新しいgvimのウィンドウを開いて現在編集しているファイルを開く
nm <C-j> :call MakeNewWindow()<CR>
::(コロン)+Ctrol+oで現在開いているファイルのディレクトリをエクスプローラで開く
cm <C-o> call ExplorerStart()<CR>
環境変数のPATHにcygwinのパスを追加
(はじめからcygwinのパスを通しているとwincvsがエラーになるため。)
let $PATH=$PATH.";c:/cygwin/bin"

|

« 連番によるバックアップ | トップページ | windowsで必ず入れるフリーソフト »

vim」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/68673/40150946

この記事へのトラックバック一覧です: windowsのgvimの設定:

« 連番によるバックアップ | トップページ | windowsで必ず入れるフリーソフト »