あけましておめでとうございました。年末くらいからvim-jpのslackに忍び込んで読書会に参加したりしてモチベーションが高かったのでスクリプトが出来ました。
netrwのブックマーク先にダイレクトに移動するスクリプト
とりあえずソースから
netrwbook.vim
function! netrwBook#open(...) abort
if a:0 > 0 && a:1 != 0
echo a:1
let selectIdx = a:1
else
let idx = 1
for n in g:netrw_bookmarklist
echo printf('%3d: %s',idx,n)
let idx += 1
endfor
let selectIdx = input('番号と<Enter>を入力して下さい (空でキャンセル): ')
endif
try
if selectIdx <= 0
throw 'E684'
endif
execute 'silent Explore '.g:netrw_bookmarklist[selectIdx-1]
catch /E684/
if selectIdx != ''
echo "\rブックマークのインデックスが範囲を超えています。"
endif
endtry
endfunction
なにこれ
vimのノーマルモードのキーマップgb
が空いていて、netrwと共通なのでnoremap gb :<C-u>netrwBook#open(v:count)
とかで登録しておくとノーマルモードから直にnetrwのブックマークを開けます。引数がなければ入力待ち、netrwの仕様どおり3gb
で3番目のブックマークも出来る様になっています。
最近覚えたこと
v:countの使い方
vim-jpのslackで教えてもらいました。<C-u>
でコマンドのカウントを無視して、変数v:count
を使ってコマンド内にカウントの数値を使うことが可能なんだけど、変数展開に気をつけること。デフォ値を1にしたい時はv:count1
が使える。
printf()がある
全然気がついてなかった…