LoginSignup
0
2

More than 5 years have passed since last update.

スクリプトでちょっと足回り強化

Last updated at Posted at 2018-05-11

正直:lsは使いづらくて…

使いづらいってほどじゃないんだけど、コマンド実行後の画面専有があまり嬉しくないので定期的にふっ飛ばしたくなりつつも、あると便利なのも本音なのでうまいこと調節してやりたいんですよね。それは:oldfilesも一緒で…でもいちいち:filterもめんどくさい。

ということはスクリプトですよね?

SCRIPT OR DIE!!!!!!!!!

command.vim
" :lsと:oldfilesのフィルタリング用
function! s:loadList(...) abort
  if a:0 != 1
    let l:query = '/'.a:2.'/ '
  else
    let l:query = '// '
  endif
  exec 'filter '.l:query.a:1
endfunction

command! -nargs=? RRoldfiles call s:loadList('oldfiles',<f-args>)
command! -nargs=? BBls call s:loadList('ls',<f-args>)

noremap <Leader>rr :RRoldfiles 
noremap <Leader>bb :BBls 

これでリーダーから省略で入力してもその状態からフィルタリングして出力の量が減らしやすくなりました。さておき、それでも多いときは多いし出来ればコマンドの出力結果自体を画面の半分くらいにしてほしいんだけど、どっか設定できる所あるんですかね?おしえてvimmer!

間違えて何度ウィンドウ閉じたことか…

編集ウィンドウが一つしかない時によく間違えて:qしてしまうので…

command.vim
function! s:chkQuit() abort
    if winnr() * tabpagenr() > 1
        :quit
    else
        :enew
    endif
endfunction

command! -bang CQ :call s:chkQuit('')

nnoremap q :CQ

:qに対して引数ないので簡単だったけどこれ:wqに対してはちょっと調べないとる気がせんやつだなーってなってます。そんなに考えることなさそうなんでちょっとやってみますか…

なんだこれ全然ダメじゃねぇか!

もっと単純でいいのよ?

コマンドの置き換えはcabbrevを使える…ならcloseに置き換えてしまえるのか…

vimrc
cabbrev q <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'close' : 'q')<CR>

まぁそりゃそうよね。ただ、「気分的にコマンドに対して別なコマンド動くの気持ち悪くない?」ってなってます。例えば…

function! s:quitChk() abort
    if winnr('$')*tabpagenr('$') <= 1 && getcmdline() != ':quit'
        enew
    endif
endfunction

augroup dumbQuit
    autocmd!
    au QuitPre * call s:quitChk()
augroup end

…みたいに出来ないの?と思ったけど結局終了処理に入りましたね。

間違っとるやんけ!

dumbquit.vim
" :qでvimを終了させないための処理
function! s:quitChk() abort
    if winnr('$')*tabpagenr('$') <= 1 && histget("cmd",-1) !~ '\v^quit(all)?!?'
        echo ''':quit[all]'' to close vim.'
        sbp
    endif
endfunction

augroup dumbQuit
    autocmd!
    au QuitPre * call s:quitChk()
augroup end

微妙に間違ってて、コマンドが省略なしの:quitだった時だけsbpさせないようにしてた部分がgetcmdline()だとダメだったのでhistget()に変更しました。出来れば起動時のメッセージも出したいんだけどアレどうやって出してるんです?

0
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2