🙌
ddu.vimを導入する
ddu.vimを導入
ddu.vimを一発で導入するためのスニペットを書いた。
各種解説を読みたい場合は、新世代の UI 作成プラグイン ddu.vimを読めば良い。
今回は、以下のsourceを導入する
- file
- register
- buffer
- mr
mrは履歴用。それ以外は、基本的なものを入れている。
ddu.vimを簡易実行するために、ddu-commands.vimも合わせて入れておく。
プラグインのインストールにはdein.vimを使う。
dein.vimは既にインストールされている物とする。
コピペ用
"dein
call dein#begin()
call dein#add('Shougo/ddu.vim')
call dein#add('vim-denops/denops.vim')
call dein#add('Shougo/ddu-ui-ff')
call dein#add('Shougo/ddu-source-file')
call dein#add('Shougo/ddu-source-register')
call dein#add('kuuote/ddu-source-mr')
call dein#add('lambdalisue/mr.vim')
call dein#add('shun/ddu-source-buffer')
call dein#add('Shougo/ddu-filter-matcher_substring')
call dein#add('Shougo/ddu-commands.vim')
call dein#add('Shougo/ddu-kind-file')
call dein#end()
"ddu settings.
call ddu#custom#patch_global({
\ 'ui': 'ff',
\ 'sources': [{'name':'file','params':{}},{'name':'mr'},{'name':'register'},{'name':'buffer'}],
\ 'sourceOptions': {
\ '_': {
\ 'matchers': ['matcher_substring'],
\ },
\ },
\ 'kindOptions': {
\ 'file': {
\ 'defaultAction': 'open',
\ },
\ },
\ })
"ddu-key-setting
autocmd FileType ddu-ff call s:ddu_my_settings()
function! s:ddu_my_settings() abort
nnoremap <buffer><silent> <CR>
\ <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
nnoremap <buffer><silent> <Space>
\ <Cmd>call ddu#ui#ff#do_action('toggleSelectItem')<CR>
nnoremap <buffer><silent> i
\ <Cmd>call ddu#ui#ff#do_action('openFilterWindow')<CR>
nnoremap <buffer><silent> q
\ <Cmd>call ddu#ui#ff#do_action('quit')<CR>
endfunction
autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
nnoremap <buffer> <CR>
\ <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
nnoremap <buffer><silent> q
\ <Cmd>call ddu#ui#ff#do_action('quit')<CR>
inoremap <buffer> <CR>
\ <Cmd>call ddu#ui#ff#do_action('itemAction')<CR>
inoremap <buffer> <C-j>
\ <Cmd>call ddu#ui#ff#execute("call cursor(line('.')+1,0)")<CR>
inoremap <buffer> <C-k>
\ <Cmd>call ddu#ui#ff#execute("call cursor(line('.')-1,0)")<CR>
endfunction
"ddu keymapping.
nnoremap <SID>[ug] <Nop>
nmap ,u <SID>[ug]
nnoremap <silent> <SID>[ug]m :<C-u>Ddu mr<CR>
nnoremap <silent> <SID>[ug]b :<C-u>Ddu buffer<CR>
nnoremap <silent> <SID>[ug]r :<C-u>Ddu register<CR>
nnoremap <silent> <SID>[ug]n :<C-u>Ddu file -source-param-new -volatile<CR>
nnoremap <silent> <SID>[ug]f :<C-u>Ddu file<CR>
使い方
normalモードで、
- ,umで履歴表示
- ,ubでバッファ表示
- ,urでレジスタ表示
- ,unで新規ファイル作成
- ,ufでファイル選択
となっている。
iキーを押すと、ファジーファインドモードになり、そこから対象を絞り込んで行くことが出来る。
絞り込んだアイテムは、Ctlr+J/Ctrl+Kを使って選択を上下移動できる。
Enterキーで対象アイテムを開いたり、デフォルトの操作が出来たりする。
当面は、,ufを用いて、ファイルを選択することがメインになると思うが、その内、,umで多くのことがまかなえるようになる。
ちなみに、,unでのファイル作成を行なうと、カレントディレクトリが採用されるので、最初はどこにファイルが保存されるか分からないかもしれない。
任意のバッファ内で保存したい場合は、カレントディレクトリを変更すると良い。
command! -nargs=? -complete=dir -bang CD call s:ChangeCurrentDir('<args>', '<bang>')
function! s:ChangeCurrentDir(directory, bang)
if a:directory == ''
lcd %:p:h
else
execute 'lcd' . a:directory
endif
if a:bang == ''
pwd
endif
endfunction
" Change current directory.
nnoremap <silent> <Space>cd :<C-u>CD<CR>
上記のスクリプトを書いておけば、スペースcdでカレントディレクトリを変更することが出来る。
Discussion
call dein#add(Shougo/ddu.vim')
↓
call dein#add('Shougo/ddu.vim')
などはtypoのようです。
call dein#add('Shougo/ddu-kind-file')
が抜けているかもしれません。
ご指摘ありがとうございます。
typoとddu-kind-file追加しました。
最近のアップデートに合わせて、ddu_filter_my_settingsの内容を修正しました。