vim如何快速创建调试消息

时间:2010-06-27 15:34:52

标签: vim macvim

我在铁轨上使用红宝石但这对于这个问题并不重要。让我们说我有这样的声明

error = 'this is an error message'

我注意到我最终做了很多次

error = 'this is an error message'
puts "error = #{error.inspect}"

我确信可以编写一个宏来完成最左边左边的工作=然后再创建另一条线以及上面显示的模板。

我在mac上使用mvim。关于我应该开始寻找发展我想要的东西的任何指针。

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:3)

我录制了一个用于处理样本的简单宏。要记录宏类型 q ,然后记录要放入宏的寄存器(常规调用 q q )。要播放宏类型 @ ,然后是宏寄存器。您可以在:help recording

查看此信息

要编写宏,请使用以下命令(以下是应该如何查看寄存器)

^yEoputs "error = #{^Op.inspect}"^[

^移动到行的第一个非空白字符

yE猛拉到空格分隔的单词的末尾。

o让你进入下一行的插入模式

puts "error = #{是您输入的文字

^O ctrl + O (大写字母o) - 这允许下一个,只有下一个命令在命令模式下运行,是...

p在执行此命令后,您将使用猛拉的单词,您仍然处于插入模式

.inspect}"是您键入的文字,最后是......

^[ Esc

答案 2 :(得分:0)

我会选择:

nnoremap µ :s/^\s*\(\k\+\)\s*=.*/&\rputs "\1 = #{\1.inspect}"/<cr>

:s提供了完成工作的优势以及匹配指定的变量(如果有的话)。使用ywp等经典命令执行相同的操作会更麻烦。

如果模板变得更复杂,我们可以依赖模板文件扩展器,只要它们很容易调用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

答案 3 :(得分:0)

如果你在飞行中这样做,一个片段代码可能如下所示:

${1:error} = '${2:error message here}'
puts "error = #{$1.inspect}"

另一方面,如果您只是想输出预先存在的变量以进行调试。 Nick-Canzoneri的宏可能更有用。