みごとに上書きされてました
先日、元々
大方、
gsなどがどこかで上書きされただけだと思います。 :verbose map
などを実行してチェックしてみてください。
<Leader>の目的 - Re: leaderをスペースに割り当てた時の挙動 - Guyon Diary - while ("im the true Vim master"); - vimグループ
風のような速さでレスを頂いたとおりに*1verboseを使って表示してみると
:verbose map gs
n <Space>gs * :GitStatus<CR> Last set from ~/.vim/plugin/git.vim ov <Space>gs * :CD<CR> :GitStatus<CR> Last set from ~/.vimrc
うっ...あった。
プラグインの方で設定されていました。
nnoremap <Leader>gd :GitDiff<Enter> nnoremap <Leader>gD :GitDiff --cached<Enter> nnoremap <Leader>gs :GitStatus<Enter> nnoremap <Leader>gl :GitLog<Enter> nnoremap <Leader>ga :GitAdd<Enter> nnoremap <Leader>gA :GitAdd <cfile><Enter> nnoremap <Leader>gc :GitCommit<Enter>
そうかぁ、leaderでは遠いからvimrcに同じようなmap設定を追加したのだったかぁ・・・
それで、leaderを指定すると駄目だったのか。
とんでもないお騒がせ野郎ですね。ちょっとヘコみました。んぁぁぁ。
mapはあえてgit.vimのほうを消してvimrcの方を活かすことにしました。
複数コマンドの実行
他にも赤ペン先生を頂いたので、修正してコミットするなどしました。
またもやってしまったmapの範囲系。
" ":CD<CR> :GitStatus<CR>"では<Space> (:help <Space>)が実行されてしまう。 " {rhs}はそのまま実行されるということに注意。 nnoremap <Space>gs :CD \| GitStatus<CR>
複数コマンドの実行でこのパイプを使った方法を最初やりたかったんだけど、なぜか「後ろに余計な文字あるよ」ってエラーになってしまい、四苦八苦しても解決できなかったので
ですが、やはりエラーが発生。
helpを引きまくってなんとか原因に辿り着く事が出来ました。
:h :bar
*:bar* *:\bar* '|' を使ってコマンドを区切ることができる。これにより一行に複数のコマンドを書き 込める。引数に '|' を使いたいときは、'\' を前に置くこと。 以下のコマンドは '|' を引数として認識するため、後に他のコマンドを続けることは できない。 :argdo :autocmd :bufdo """"""""""""""""""""...続く
なるほど、コマンドによってはbarで区切る事ができないのかぁ。ということはCDの定義がまずかったという事か。
:h :command
特殊なケース 特殊なケースがいくつかあります: -bang コマンドは!修飾子を取ることができます(:qや:wのように) -bar コマンドは"|"を使用して別のコマンドを続けて実行することが できます。引数に"|"を含めることはできなくなります。"がコメ ントの開始になってしまうことにも注意してください。
なるほどcommandに「-bar」を指定しないと駄目なんですね。
" カレントディレクトリに移動 command! -bar CD execute 'lcd' expand('%:p:h')
とすると、パイプを使って連続したコマンドを使えるようになりました。
やった。 :-)
*1:ありがとうございました。