Fri, 28 Aug 2009

Vim

使用しているVim

MacVim は以前使って「こりゃだめだ…」ということだったので、 MacPorts-JPVim を使っていた。

なんとなくスナップショットを使ったら、タブの見栄えはかっこいいし、 MacPorts-JPVim で気になっていた、日本語入力の時の文字のずれもない。

なんで「こりゃだめだ…」と思ったのか思い出せない…

脳が悪いんだなぁw

ってことで今は MacVim の スナップショット43 を使用。

文書追加 2009年 3月12日 木曜日 10時50分25秒 JST

MacPortsVim を使用。

MacPortsWiki-JP で配布されている PrivatePortfile を使ってコンパイル…

してくれてるものを使用w

ありがたい。

Mac OS X 10.4/10.5用 vim7.1.293 universalバイナリ の Carbon版を使用。

文書作成 2009年 3月 9日 月曜日 11時00分06秒 JST

設定

OSをLeopardにしてVimの設定も見直した。

vimrc (Leopard)

" vimrc
" 2009年 3月 5日 木曜日 01時22分59秒 JST 作成

" vi互換をオフにする
set nocompatible

"---------------------------------------------------------------------------
" 文字コード
"---------------------------------------------------------------------------
" Vimがファイルを開く時
"
" fileencodings に指定された文字コードから
" encoding で指定した文字コードへの変換を試みる
" 変換に成功:変換に成功した文字コードでファイルが開かれ
"             fileencoding には変換に成功した文字コードがセットされる
" 変換に失敗:encodingに指定された文字コードでファイルが開かれ
"             fileencoding の値は空になる
" ex:
" 設定
" encoding=utf-8
" fileencodings=ucs-bom,iso-2022-jp,cp932,euc-jp
"
" Vim が cp932 (SJIS) のファイルを開く時
" ucs-bom → utf-8
" iso-2022-jp → utf-8
" cp932 → utf-8
" と変換を試みていく
" cp932 → utf-8 で変換に成功
" fileencoding に cp932 をセットしてファイルを開く
"
" Vim が encoding と同じ utf-8 のファイルを開く時
" ucs-bom から euc-jp までの変換は全て失敗するので
" utf-8 でファイルを開き fileencoding の値は空になる
"
" 参考
" ずんWiki
" www.kawaz.jp/pukiwiki/?vim#cb691f26
" KaoriYa
" www.kaoriya.net/
" Peace Pipe
" peace-pipe.blogspot.com/2006/04/mac-6-vim-mac.html

set encoding=utf-8
" 文字コードの自動認識
if &encoding !=# 'utf-8'
  set encoding=japan
  set fileencoding=japan
endif
if has('iconv')
  let s:enc_euc = 'euc-jp'
  let s:enc_jis = 'iso-2022-jp'
  " iconvがeucJP-msに対応しているかをチェック
  if iconv("¥x87¥x64¥x87¥x6a", 'cp932', 'eucjp-ms') ==# "¥xad¥xc5¥xad¥xcb"
    let s:enc_euc = 'eucjp-ms'
    let s:enc_jis = 'iso-2022-jp-3'
  " iconvがJISX0213に対応しているかをチェック
  elseif iconv("¥x87¥x64¥x87¥x6a", 'cp932', 'euc-jisx0213') ==# "¥xad¥xc5¥xad¥xcb"
    let s:enc_euc = 'euc-jisx0213'
    let s:enc_jis = 'iso-2022-jp-3'
  endif
  " fileencodingsを構築
  if &encoding ==# 'utf-8'
    let s:fileencodings_default = &fileencodings
    let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
    let &fileencodings = &fileencodings .','. s:fileencodings_default
    unlet s:fileencodings_default
  else
    let &fileencodings = &fileencodings .','. s:enc_jis
    set fileencodings+=utf-8,ucs-2le,ucs-2
    if &encoding =~# '^¥(euc-jp¥|euc-jisx0213¥|eucjp-ms¥)$'
      set fileencodings+=cp932
      set fileencodings-=euc-jp
      set fileencodings-=euc-jisx0213
      set fileencodings-=eucjp-ms
      let &encoding = s:enc_euc
      let &fileencoding = s:enc_euc
    else
      let &fileencodings = &fileencodings .','. s:enc_euc
    endif
  endif
  " 定数を処分
  unlet s:enc_euc
  unlet s:enc_jis
endif
" 日本語を含まない場合は fileencoding に encoding を使うようにする
if has('autocmd')
  function! AU_ReCheck_FENC()
    if &fileencoding =~# 'iso-2022-jp' && search("[^¥x01-¥x7e]", 'n') == 0
      let &fileencoding=&encoding
    endif
  endfunction
  autocmd BufReadPost * call AU_ReCheck_FENC()
endif
" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
  set ambiwidth=double
endif

"---------------------------------------------------------------------------
" 検索
"---------------------------------------------------------------------------
"
" 検索時に大文字小文字を無視 (noignorecase:無視しない)
set ignorecase
" 大文字小文字の両方が含まれている場合は大文字小文字を区別
set smartcase
" 検索文字列をハイライトする
set hlsearch
" インクリメンタルサーチを行う
set incsearch
" 検索時にファイルの最後まで行ったら最初に戻る (nowrapscan:戻らない)
set wrapscan
" Migemo
" g/ g? でmigemo検索
if has('migemo')
  set migemo
endif

"---------------------------------------------------------------------------
" 編集
"---------------------------------------------------------------------------
"
" タブの画面上での幅
set tabstop=4
" Vimによって自動的に挿入されるインデント (autoindentやcindent) の画面上での幅
set shiftwidth=4
" タブキーを押した時に挿入される空白の幅
" softtabstop が 0 以外の時:   tabstop=4 でも softtabstop の分だけ挿入される
" softtabstop が 0 の時:       tabstop の分だけ挿入される
set softtabstop=0
" タブをスペースに展開しない (expandtab:展開する)
set noexpandtab
"set expandtab
" 自動的にインデントする (noautoindent:インデントしない)
" 挿入されたインデントを削除するには CTRL-D
" コメント文字を削除するには CTRL-W
set autoindent
" C言語のインデントを行う
"set cindent
" バックスペースでインデントや改行を削除できるようにする
set backspace=2
" 括弧入力時に対応する括弧を表示 (noshowmatch:表示しない)
set showmatch
" 対応する括弧にカーソルをジャンプさせない
let loaded_matchparen = 1
" コマンドライン補完をシェルのように (デフォルト:full)
"set wildmode=list:longest,full
" コマンドライン補完するときに強化されたものを使う(参照 :help wildmenu)
set wildmenu
" テキスト挿入中の自動折り返しを日本語に対応させる
set formatoptions+=mM
" バックアップファイルを作成しない
set nobackup
" バッファを切り替えてもundoできるようにする
set hidden

"---------------------------------------------------------------------------
" 表示(非GUI固有)
"---------------------------------------------------------------------------
"
" シンタックスをオンにする
syntax on
" 行番号を非表示 (number:表示)
set nonumber
" ルーラーを表示 (noruler:非表示)
set ruler
" タブや改行を表示しない (list:表示)
set nolist
" どの文字でタブや改行を表示するかを設定
set listchars=tab:>-,extends:<,trail:-,eol:<
" 長い行を折り返して表示 (nowrap:折り返さない)
set wrap
" 常にステータス行を表示 (詳細は:he laststatus)
set laststatus=2
" コマンドラインの高さ
set cmdheight=1
" コマンドをステータス行に表示
set showcmd
" タイトルを表示
set title
" カーソルの上または下に表示する行数
" 画面より大きな値を指定すればカーソルは常に中央になる
set scrolloff=5
" ステータスラインに文字コードなどを表示する
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P
" エラー音のかわりにヴィジュアルベル(画面フラッシュ)
set vb
" ヴィジュアルベル(画面フラッシュ)の値を空に
set t_vb=

"---------------------------------------------------------------------------
" その他
"---------------------------------------------------------------------------
"
" コマンドのヒストリ(コロンコマンド)
set history=1000
" ファイルタイプを検出して、タイプ毎のプラグイン、インデントを有効にする
filetype plugin indent on

"---------------------------------------------------------------------------
" MAP
"---------------------------------------------------------------------------
"
" 検索結果が画面中央に表示されるようにする
nmap n nzz
nmap N Nzz
nmap * *zz
nmap # #zz
nmap g* g*zz
nmap g# g#zz
" コマンド入力時(exモード)のカーソル移動
cmap <C-a> <Home>
cmap <C-e> <End>
cmap <C-f> <Right>
cmap <C-b> <Left>
" 挿入モードでのカーソル移動
imap <C-a> <Home>
imap <C-e> <End>
imap <C-f> <Right>
imap <C-b> <Left>
" 検索ハイライト切り替え
map ,h :set hlsearch!<CR>
" reStructuredText のハイパーリンク作成
vmap ,a v`>a`_<ESC>`<i`<ESC>
vmap ,s v`>a: <ESC>`<i.. _<ESC>

"---------------------------------------------------------------------------
" コマンド
"---------------------------------------------------------------------------
"
" 日付挿入(どこのサイトから拾ってきたのか忘れた)
command! Date normal o<ESC>!!date<CR>==
map \date :Date<CR>

文書作成 2009年 3月 9日 月曜日 10時45分11秒 JST

gvimrc (Leopard)

" gvimrc
" 2009年 3月 5日 木曜日 01時42分29秒 JST 作成

"---------------------------------------------------------------------------
" カラー
"---------------------------------------------------------------------------
"
"colorscheme xemacs
" buttercream を少し変更
colorscheme buttercream2

"---------------------------------------------------------------------------
" IM制御
"---------------------------------------------------------------------------
"
" IMを使用しない
set imdisable
" 入力モード移行時にIMをオンにしない
set iminsert=0
" 検索モード移行時にIMをオンにしない
set imsearch=0
" インライン入力時色設定
"hi IMLine guifg=#880088 guibg=LightGrey
"hi IMLine guifg=#ffffde guibg=Black
" ColorScheme で設定

"---------------------------------------------------------------------------
" フォント
"---------------------------------------------------------------------------
"
" BitstreamVeraSansMono
set guifont=BitstreamVeraSansMono-Roman:h12
" Osaka
"set guifont=Osaka-等幅:h12
"set guifont=Osaka-Mono:h13
" M+ と IPA の合成フォント
" mix-mplus-ipa.sourceforge.jp/
"set guifont=M+1VM+IPAG_circle_Regular:h14
"set guifont=M+1VM+IPAG_circle_Regular:h13
" アンチエイリアス
set antialias
" Apple Type Services for Unicode Imaging を使用する
if has('macatsui')
  set macatsui
endif

"---------------------------------------------------------------------------
" 表示
"---------------------------------------------------------------------------
"
" 行間隔の設定
set linespace=1
" どんな時も左右のスクロールバーを表示させない
set guioptions-=r
set guioptions-=L
" ツールバーを表示しない
set guioptions-=T
" メニューアイテムを取り外し可能にしない
set guioptions-=t

"---------------------------------------------------------------------------
" ウィンドウ
"---------------------------------------------------------------------------
"
" 幅
set columns=100
" 高さ
set lines=35

"---------------------------------------------------------------------------
" マウス
"---------------------------------------------------------------------------
"
" どのモードでもマウスを使えるようにする
set mouse=a
" マウスの移動でフォーカスを自動的に切替えない (mousefocus:切替える)
set nomousefocus
" 入力時にマウスポインタを隠す (nomousehide:隠さない)
set mousehide
" ビジュアル選択(D&D他)を自動的にクリップボードへ (:help guioptions_a)
set guioptions+=a

文書作成 2009年 3月 9日 月曜日 11時10分48秒 JST

buttercream (Leopard)

どこかの国の誰かが作成したものを改変。

名前の響きが卑猥w

ぬめっとした色設定が好き。

" Vim color file
" vim: tw=0 ts=8 sw=4

set background=light
hi clear
if exists("syntax_on")
  syntax reset
endif
let colors_name = "buttercream2"

"  Highlight    Foreground      Background       Extras

hi Normal       guifg=#213a58   guibg=#ffffde
hi NonText      guifg=LightBlue guibg=#eee9bf    gui=bold
hi Comment      guifg=#2f8e99
hi Constant     guifg=#7070a0
hi Statement    guifg=DarkGreen                  gui=bold
hi identifier   guifg=DarkGreen
hi preproc      guifg=#408040
hi type         guifg=DarkBlue
hi label        guifg=#c06000
hi operator     guifg=DarkGreen                  gui=bold
hi StorageClass guifg=#a02060                    gui=bold
hi Number       guifg=Blue
hi Special      guifg=#aa8822
hi Cursor       guifg=LightGrey guibg=#880088
hi lCursor      guifg=Black     guibg=Cyan
hi ErrorMsg     guifg=White     guibg=DarkRed
hi DiffText                     guibg=DarkRed    gui=bold
hi Directory    guifg=DarkGrey                   gui=underline
hi LineNr       guifg=#ccaa22
hi MoreMsg      guifg=SeaGreen                   gui=bold
hi Question     guifg=DarkGreen                  gui=bold
hi Search       guifg=Black     guibg=Grey       gui=bold
hi SpecialKey   guifg=Blue
hi SpecialChar  guifg=DarkGrey                   gui=bold
hi Title        guifg=DarkMagent                 gui=underline
hi WarningMsg   guifg=DarkBlue  guibg=#9999cc
hi WildMenu     guifg=Black     guibg=Yellow     gui=underline
hi Folded       guifg=DarkBlue  guibg=LightGrey
hi FoldColumn   guifg=DarkBLue  guibg=Grey
hi DiffAdd                      guibg=DarkBlue
hi DiffChange                   guibg=DarkMagenta
hi DiffDelete   guifg=Blue      guibg=DarkCyan   gui=bold
hi Ignore       guifg=grey90
hi IncSearch                                     gui=reverse
hi ModeMsg                                       gui=bold
hi StatusLine                                    gui=reverse,bold
hi StatusLineNC                                  gui=reverse
hi VertSplit                                     gui=reverse
hi Visual       guifg=LightGrey guibg=#880088    gui=reverse
hi VisualNOS                                     gui=underline,bold
hi Todo                         guibg=#ccaa22    gui=bold,underline

" インライン入力時色設定
hi IMLine       guifg=#ffffde   guibg=Black

文書作成 2009年 3月10日 火曜日 11時06分35秒 JST

vimrc (旧)

filetype on

" ファイルを開くとき fileencodings に リストされている順番で 文字コードを
" 判定していく。
" 有効な文字コードが見つかると(エラーが発見されないと)、 この値が
" fileencoding にセットされる。
" すべて失敗した場合には fileencoding の値は空に 設定され encoding の値が
" 使われる。
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8,euc-jp,iso-2022-jp,cp932

set fileformat=unix
set fileformats=unix,mac,dos

" <Tab> を挿入する際に スペース で置き換える。 autoindent のインデントも
" スペースに変換される。
" 本当に <Tab> を挿入したいときには CTRL-V<Tab> を使う。
set expandtab
set tabstop=4
set shiftwidth=4

" 新しい行を開始したときに、現在の行と同じ量のインデントで開始する。
" 新しい行で CTRL-D を打つと インデントは解除される。
set autoindent
set ignorecase
set smartcase
set wrapscan
set nohlsearch
set wildmenu
set wildmode=longest:full
set backspace=2
set ruler
set showcmd
set laststatus=2
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P

" バッファを切り替えても undo が効くようにする。
set hidden

" エラー音の 代わりに 画面フラッシュ を使う。 そして フラッシュ はさせない。
set vb t_vb=
set nobackup
set title

" gq や コメントのときだけ テキスト整形を有効にする。 コメント入力時に
" <return> で次の行に 移ったときには コメント記号を挿入する。
" o や O で新しい行に 移った場合は コメント記号は 挿入されない。
" 日本語も対応しているが、 単語の区切りは 半角のスペースでなければ だめ。
" ただし 特定のファイルを 開くと この値が 上書きされてしまう ことがある。
" その場合は、 $HOME/vimfiles/ftplugin/after/any.vim に 設定を書くことで、
" さらに上書きが可能。
" コメント指示記号 が挿入されてしまっても、 CTRL-W でコメント記号を 消せる。
" どうも gvim では反映されない。 .gvimrc にも記述しておく。
"set textwidth=78
"set formatoptions+=r
"set formatoptions-=t
"setlocal fo-=t fo+=r
" gvim だと ここで指定した formatoptions がまったく反映されない。
" よくわからないので、デフォルトでいく。

" Vim7 になって 対応する カッコが存在すると ジャンプ するようになった。
" これを禁止するための設定。
let loaded_matchparen = 1

2007年 2月 5日 月曜日 18:36:07 JST

gvimrc (旧)

syntax on
highlight Normal guibg='#FFFFF3'
set vb t_vb=
set guifont=M+2VM+IPAG\ circle\ 10
set columns=110
set lines=50

2007年 2月 5日 月曜日 18:36:07 JST

Script

EnhancedCommentify

名無しのVIM使いさんのサイトでも解説されている非常に使い勝手のよいプラグイン。 プラグインはあまり利用しないがこれだけは必ずいれている。 EnhancedCommentify.vim をプラグインディレクトリにいれればインストールは終了。 解凍してできるEnhancedCommentify.txtをドキュメントディレクトリにいれて、 ドキュメントの追加をすればヘルプも読める。

BACKSLASH.png X.png

でコメントを(つける | はずす)。

BACKSLASH.png C.png

はコメントを(つける | はずす)したあとに一行下に移動する。

プラグインのページ: EnhancedCommentify.vim

文書修正 2007年 2月 10日 土曜日 21:04:46 JST

vcscommand

SubversionPyBlosxom のエントリーなどを管理するようになって使い始めたプラグイン。 まだベータみたいだが特に不具合もなく使用できている。

解凍してできた vcscommand.vim, vcscvs.vim, vcssvn.vim をプラグインディレクトリに格納。 ドキュメントファイルをドキュメントディレクトリにいれて、追加コマンド。 このドキュメントに <Leader> というのが頻繁にでてくる。 なんのことだかわからなかったのでヘルプに聞く。

:he Leader

どうやらマップのトリガで特に指定がない場合は \(backslash) になるようだ。

vcscommand では様々なコマンドがマッピングされているので便利。

:he vcscommand-mappings

で一覧を見ることができる。

プラグインのページ: vcscommand.vim

文書追加 2007年 2月 10日 土曜日 20:38:39 JST

scratch

scratchバッファを作成するプラグイン。scratchバッファはemacsにあるバッファのこと(だと思う)。 elispが評価できたり、メモなんか適当に書いたりできる微妙なバッファで一回使うとやめられない。 Vimでそれを実現するプラグインだがVimスクリプトの評価はできないのかな?よくわからない。

GVimやVimを開いたままにしておくことが多く、他の作業のちょっとしたメモをとるときに 使用している。編集途中の文書が表示されていると脅迫されているような気持ちになって どきどきするのを防ぐためでもある。

scratch関係のプラグインは Vim online にいくつか登録されており、 そのなかでも Yegappan Lakshmanan という人が作成したものを使用している。 まったく同じ名前のプラグインが存在するので油断できない。 別にこれじゃなければいけないという理由は特になく、つまりそんなプラグインであるということ。

プラグインディレクトリに格納するだけ、ドキュメントファイルはない。

:Scratch

で新規スクラッチバッファ作成。

:Sscratch

でsplitで分割してスクラッチバッファを作成。

プラグインのページ: scratch.vim

文書追加 2007年 2月 10日 土曜日 21:28:15 JST

VST

Structured means Vim script recognizes some patterns and translates them into form recognizable by WWW browsers. In fact, Vim creates quasi-XML form which can be exported into HTML and LaTeX.

WWWブラウザが認識可能な状態でVimスクリプトがいくつかのパターンを認識して、 それらを翻訳する構造化された手段は形成されます。 事実上、VimはHTMLとLaTeXに輸出することができる準XMLフォームを作成します。

コンバータープラグイン。 HTML LaTeX とかで出力できる。 LaTeX は昔ちょっとやっただけなのでよく知らない。 reST で書いたものを HTML にするのに使っている。 VSTのマニュアル を読めば簡単に使える。この手のプラグインは、 何ができて何ができないかを見極める必要があるのでマニュアルは必読。

デフォルトで CSS が出力されるがこれがいらない場合。 あるいは自分の CSS を使いたい場合。

:let vst_css_default="NONE"
:let vst_css_user="hoge.css"

デフォルトの出力フォーマットは HTML なので

:VST

でバッファが分割され HTML が出力される。そこで保存とか編集とか。 さくっと使える便利なやつ。

プラグインのページ: vst.vim

追加 2007年 2月 22日 木曜日 20:44:51 JST

Tips

行の特定の文字周辺に移動

以下の行について。

aaaaabaaaaabaaaa

--

カーソルが行頭。

t b

一つ目のbの前のaにカーソル移動。

--

カーソルが行末。

T b

二つ目のbの次のaにカーソル移動。

--

カーソルが行頭。

f b

一つ目のbにカーソル移動。

--

カーソルが行末。

F b

二つ目のbにカーソル移動。

文字コードを変更する

:set fileencoding=utf-8

改行コードを変更する

:set fileformat=unix

バッファ一覧を表示する

:ls

% ... カレントバッファ
# ... 一個前のバッファ (alternate buffer)

空行の削除

:g/^$/d

ドキュメントの追加

Vim online なんかで配布されているスクリプトに付属しているドキュメントを追加する。 指定のファイルを $HOME/.vim/doc とか $VIMRUNTIME/doc 以下に格納してVimを起動し、 以下のコマンド。

:helptags $HOME/.vim/doc
or
:helptags $VIMRUNTIME/doc

文書追加 2007年 2月 10日 土曜日 20:25:16 JST

表示されているバッファの先頭位置にカーソルを移動

Z.png RETURN.png

文書追加 2007年 2月 10日 土曜日 20:47:25 JST

カレントバッファのみを表示

splitでバッファを分割表示しているときに、カーソルがあるバッファのみ表示させる (他のバッファをすべて閉じる)。

CONTROL.png W.png O.png

カーソル移動

表示バッファの一番上にカーソルを移動する。

SHIFT.png H.png

真ん中に移動。

SHIFT.png M.png

一番下に移動する。

SHIFT.png L.png

バッファ移動

カーソルの位置はそのままでバッファを移動させる。

バッファを上へ。

CONTROL.png E.png

下へ。

CONTROL.png Y.png

編集モードへ

ESC.png

CONTROL.png LEFTBRACKET.png

CONTROL.png 3.png < これだめだ…

どれでもいいの

文書追加 2007年 2月 10日 土曜日 20:42:52 JST

追加 2007年 2月 19日 月曜日 23:37:40 JST

編集 2009年 3月 9日 月曜日 13時24分23秒 JST

Memo

フォント

Bitstream Vera Fonts が好み。

MacPorts-JP で配布されている VimBitstream Vera Fonts を指定すると日本語は Osaka-Mono になるっぽい。

Osaka-Monoが指定されること自体は問題ないんだけど、入力時と画面に表示されるフォントがずれる。

vim01.png

M+ と IPAフォントの合成フォント はベストなんだけど、これはこれでコマンドラインに「`」や「<」を入力するとカーソルがずれる。

vim02.png

ちとわかりづらいけど、カーソルがずれてる。

う〜ん…

ままならないなぁ

文書作成 2009年 3月 9日 月曜日 13時01分48秒 JST

vi

さくらレンタルサーバーには Vim はインストールされておらず、 vi がインストールされている ( FreeBSD だから「あらかじめ付属している」といったほうがいいのかな?)。 この vi は vi で結構好きだったりする。 ふと、さくらの /tmp ディレクトリをみると

drwxrwxrwt  2 hoge     wheel    512  2 12 11:51 vi.recover/

こんなディレクトリが作成されていた。 Vim を使っていてこんなディレクトリを 見かけたことはないし、そんな設定もしていないので、 vi が作成したディレクトリのようだ ( Vim のスワップファイル用のディレクトリみたいなもの? まあ名前をみればね :))。試しにこのディレクトリを削除した後、 vi を起動してファイルを編集すると案の定ディレクトリが作成されていた。

このままほっといてもいいんだけど、 root 直下の tmp にあるのが気持ち悪い。 リカバリーディレクトリの指定ができるはずだと、vi のマニュアルを読んでみた。

どうやらリカバリーディレクトリの指定は

set recdir=hoge

で行えるようだ。$HOME/.exrc なんかに書いておけば起動時に読み込まれる。

追加 2007年 2月 12日 月曜日 12:27:46 JST

Vimとcrontab

EDITOR環境変数を Vim に設定しているのだが、 crontab の編集ができない。 crontab を編集するのに

$ crontab -e

と実行しているのだが、このとき一時ファイルが /tmp に作成されている。

$ l /tmp/ |grep hoge
-rw-------  1 hoge     users    141  2 12 12:35 crontab.xmq0QssUg0

保存終了すると、一時ファイルに書き込みはできているようなのだが、 以下のようなメッセージが表示され crontab には反映されない。

"crontab.xmq0QssUg0" 2L, 140C written
crontab: temp file must be edited in place

試しに

$ EDITOR=vi crontab -e

で編集すると crontab に反映される。

なんだろうと思って調べると、 Vim の「ファイルの上書きの前にバックアップファイルを作る」オプション、 writebackup が問題らしい。 writebackup は +writebackup でコンパイルされていると デフォルトでオンになるらしい。さくらへのインストール時にそんなオプションをつけて コンパイルした記憶がないのでデフォルトで +writebackup でコンパイルされるんだろう。

$ vim --version | grep writebackup
+wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp

$HOME/.vimrc に

set nowritebackup

を設定して crontab を編集するとちゃんと反映された。

しかしこのオプションをはずしていいものかどうかの判断に迷う。 マニュアルをみると結構便利そうな機能だし、有効にしておいたほうがいいオプションだという気がする。

なんやかやと悩んだあげく、 EDITOR環境変数は vi にすることにした。それで解決する。 Debian でもデフォルトでそうなっているし。

writebackupの動きは Linux/inotify-tools で確認した。

TYPO修正 2007年 6月 20日 水曜日 18:50:21 JST

文書修正 Sun Aug 19 17:01:42 JST 2007

三つのモード

よく挿入モードと編集モードの二つのモードをいったりきたりするという記述を見かけるが、 使い始めたころモードが二つと考えることで混乱したことがある。

Vim には三つのモードがあると考えることでなんとなくスッキリする(かも)。

  • 挿入モード
  • ノーマルモード
  • EXモード
vim_mode.png

挿入モードは文字入力ができる。ノーマルモードはカーソル移動や CONTROL 系のキーバインドが使える。 EXモードは実際に Linux かなんかで ex を起動して操作すると具体的な感覚がつかめると思う。

追加 2007年 2月 12日 月曜日 14:22:40 JST

追加 2007年 2月 13日 火曜日 21:24:46 JST

追加 2007年 2月 19日 月曜日 23:37:11 JST

参考URL

posted at: 12:29 | category: Draft/Vim | permanent link

bernd_hilla_becher_25.jpg bernd_hilla_becher_21.jpg bernd_hilla_becher_02.jpg bernd_hilla_becher_10.jpg bernd_hilla_becher_06.jpg bernd_hilla_becher_13.jpg bernd_hilla_becher_22.jpg

clean_small.jpg big_small.jpg blanket_small.jpg punch_small.jpg push_small.jpg reach_small.jpg drum_small.jpg





































































































wittgenstein_04.jpg
Tractatus Logico-Philosophicus