我会去:
nnoremap µ :s/^\s*\(\k\+\)\s*=.*/&\rputs "\1 = #{\1.inspect}"/<cr>
:s
提供了完成工作加上匹配分配的变量(如果有)的优势。yw
用,等经典命令做同样的事情p
会更麻烦。
如果模板变得更复杂,我们可以依赖模板文件扩展器,只要它们可以轻松调用 viml 函数,如matchstr()
. 当然,在这种情况下,我会使用带有以下模板文件的mu-template :
VimL:" $Id: {rtp}/template/ruby/inspect.template
VimL: let s:value_start = '¡'
VimL: let s:value_end = '¡'
VimL: let s:reindent = 1
VimL: let s:marker_open = '<+'
VimL: let s:marker_close = '+>'
VimL: let s:varname = matchstr(getline(line('.')-1), '^\s*\zs\k\+\ze\s*=')
VimL: if empty(s:varname) |throw "the previous line don't assign any variable" |endif
puts "¡s:varname¡ = #{¡s:varname¡.inspect}"<++>
VimL:"vim: encoding=utf-8