我想开始使用vimscript来自动化我工作流程中一些更复杂的部分。我正在寻找一个具体的高级示例来帮助我入门。你如何对大师实施以下内容?
我在位于lib/foo/bar/buz.rb
的文件的空缓冲区中。我想使用我的文件上下文+一个绑定将以下内容插入缓冲区:
module Foo
module Bar
class Buz
end
end
end
vim功能是什么样的?
加分: Vim function to update class definition to reflect current location
我认为这个例子将把我的vim脚本提升到一个新的水平。谢谢!
答案 0 :(得分:0)
这最终是我提出来的。
" Generates a ruby class definition based on the current file's path
function! GenerateRubyClassDefinition()
" parse file path
let l:path = expand("%:.:r")
let l:path = substitute(l:path, "lib/", "", "")
let l:parts = split(l:path, "/")
" extract parts
let l:class_name = l:parts[-1]
let l:module_names = l:parts[0:-2]
" generate
let l:output = ""
" generate - module headers
for m in l:module_names
let l:output .= "module " . g:Abolish.mixedcase(m) . "\n"
endfor
" generate - class
let l:output .= "\n"
let l:output .= " class " . g:Abolish.mixedcase(class_name) . "\n"
let l:output .= " end\n"
let l:output .= "\n"
" generate - module footers
for m in l:module_names
let l:output .= "end\n"
endfor
echo l:output
endfunction
上面的代码片段假设你安装了tpope的vim-abolish插件。这有助于将snakecase文件路径转换为mixcase对象名称。
获取上述内容并从打开的文件缓冲区调用:GenerateRubyClassDefinition()
将回显目标输出。