以下のコードがあって、(defn ..) ブロック内にカーソルがあるとき、(defn ..) ブロック全体を VimShell に送信する。
(defn foo [arrrrg] "Foo function!" (println (str 'foo arrrrg)))
普通、行頭に "(" あるよね?みたいな前提でうごきます。あるよね?
function! s:vs_send_clojure_block () let l:old_reg_slash = @/ execute "normal! ?^(\<CR>v%:VimShellSendString\<CR>" let @/ = l:old_reg_slash endfunction command! VimShellSendClojureBlock call s:vs_send_clojure_block() nnoremap <buffer> <silent> ,s :VimShellSendClojureBlock<CR>