1

私はRuby on Railsを使用していますが、それはこの質問にはあまり関係ありません. 私がこのような声明を持っているとしましょう

error = 'this is an error message'

私はこれをたくさんやってしまうことに気づきました

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

一番左の = の左側で作業を行い、上記のテンプレートと一緒に別の行を作成するマクロを作成できると確信しています。

Macでmvimを使用しています。必要なものを開発するためにどこから探し始める必要があるかについての指針。

4

4 に答える 4

3

サンプルを実行する単純なマクロを記録しました。マクロタイプqに続いて、マクロを配置するレジスタを記録するには(従来の方法ではqq)。マクロタイプを再生するに@は、マクロレジスタを実行します。あなたはこれを見ることができます:help recording

マクロを作成するには、次のコマンドを使用します(レジスターでの表示方法は次のとおりです)。

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

^行の最初の非空白文字に移動します

yEスペースで区切られた単語の最後にヤンクします。

o次の行で挿入モードになります

puts "error = #{入力するテキストです

^Ois ctrl+ O(大文字のo)-これにより、次のコマンドのみをコマンドモードで実行できます。

pヤンクされた単語を入力します。このコマンドを実行した後も、挿入モードのままです。

.inspect}"入力したテキストで、最後に...

^[Esc

于 2010-06-28T01:42:24.583 に答える
3

スニップメイトを試してください: http://www.vim.org/scripts/script.php?script_id=2540

于 2010-06-27T15:37:34.833 に答える
0

私は行きます:

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
于 2010-06-28T09:33:35.650 に答える
0

これらをオンザフライで実行している場合、snipmate スニペットは次のようになります。

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

一方、デバッグ目的で既存の変数を出力したいだけの場合。Nick-Canzoneri のマクロの方が便利かもしれません。

于 2010-06-28T18:46:38.740 に答える