search
LoginSignup
1

More than 3 years have passed since last update.

posted at

netrwを気持ちよく使いたい

あけましておめでとうございました。年末くらいから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()がある

全然気がついてなかった…

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
What you can do with signing up
1