2

次のように、jsonオブジェクトの数値をインクリメントする簡単なマクロを作成しました。

{
    image: 'images/2.jpg',
    thumb: 'images/2-thumb.jpg',
    big: 'images/2.jpg',
    title: '',
    description: '',
    link: 'images/2.jpg'
},

と:

q, n, shift-v, down-till-end, p, move-to-numbers, c-a, return-to-top, q, 150@n

(ここSEでvimマクロを投稿するのに適切な構文ではない場合は申し訳ありません)

そしてそれは動作しますが、それはちょうど9日まで増分します。私は何が欠けていますか?

前もって感謝します。

編集:

私はこのようなものに到達しようとしています:

{
    image: 'images/3.jpg',
    thumb: 'images/3-thumb.jpg',
    big: 'images/3.jpg',
    title: '',
    description: '',
    link: 'images/3.jpg'
},
{
    image: 'images/4.jpg',
    thumb: 'images/4-thumb.jpg',
    big: 'images/4.jpg',
    title: '',
    description: '',
    link: 'images/4.jpg'
},
... until *nth* value
4

4 に答える 4

4

カーソルが最初の開き角かっこ上にあると仮定すると、これを行う1つの方法があります。

qn                    " start recording in register n
V%                    " select from here to the closing bracket, linewise
y                     " yank the selection
%                     " jump to the closing bracket
p                     " paste after the current line
:'[,']norm <C-v><C-a> " executing the normal mode command <C-a>(1) on all the lines that we just pasted
q                     " stop recording

その後、実行します150@n

(1)<C-v><C-a>は、リテラルを挿入するために使用され^Aます。

于 2013-03-15T20:46:52.523 に答える
1

これを試して:

ビジュアルモードに入り、マクロ実行に含める行を次のように選択します。

:normal @n

次に、Enterキーを押すと、マクロが選択した行に適用されます

于 2013-03-15T20:14:51.613 に答える
0

私はそれを試してみました:

qqv%:s/\d\+/\=submatch(0)+1/^M[[yGGp

簡単な説明

qq                              "recording to register q
v%                              "select things between { and }
:s/\d\+/\=submatch(0)+1/^M      "just do +1 to all numbers (selected range)
[[                              "back to begin {
yG                              "yank till the end
Gp                              "paste at the end

その後、150@q

同じマクロを記録する場合は、次のように入力^Mします。Enter

@qタイプ^Mするマクロを割り当てる場合<c-v><enter>

ところで、関数名submatch(0)が長すぎるので、これはゴルフに勝ちません... :)

于 2013-03-15T21:27:23.593 に答える
0

私のUnconditionalPasteプラグインを使用すると、元のブロックをレジスターにヤンクした後、(すべての数値をインクリメントし[N]て行ごとに貼り付ける)を使用して、自動インクリメントされたブロックを簡単に貼り付けることができます。[N]gPp

プラグインでは、テキストの貼り付け方法を他のいくつかの操作で操作することもできます。

于 2013-03-18T16:01:59.357 に答える