vimの検索と置換にvimscript変数と文字列を挿入する方法

vimの検索と置換にvimscript変数と文字列を挿入する方法

私は今日Vimscriptの存在を見つけました。この質問が表示より基本的である場合はご了承ください。しかし、私は一日中この質問に対する答えを見つけようとしました。

私はvimで何度も何度も何度も何度も実行する必要があるファイルを扱っています。たとえば、私のファイルは次のようになります。

    firstname
    secondname
    thirdname
    fourthname
    fifthname
    sixthname
    ...

リストは引き続き続きます。私がしたいのは、各行の末尾に固定文字列を追加して、各行が増加する数字で終わるようにすることです。つまり:

    firstname = _first1
    secondname = _first2
    thirdname = _first3
    fourthname = _first4
    fifthname = _first5
    sixthname = _first6
    ...

私はこの問題を解決するために短いbashスクリプトを書くことができることを知っていますが、私が習得したい技術であるvimscriptを使ってvimですべてのことをすることができるという見方に魅了されました。これまで、vimコマンドモードで実行される関数を設計しました。

    :let i=1 | g/name/s//\=i/ | let i=i+1

結果はほとんど私が望むものなので、これは有望に見えます。

    first1
    second2
    third3
    fourth4
    fifth5
    sixth6
    ...

ただし、いくら変更しようとしても、文字列(=_first)の後に数字が増えるように印刷することはできません。このような...

    :let i=1 | g/name/s//name = _first\=i/ | let i=i+1

これを作ります。

    firstname = _first=i
    secondname = _first=i
    thirdname = _first=i
    fourthname = _first=i
    fifthname = _first=i
    sixthname = _first=i
    ...

これ...

    :let i=1 | execute 'g/name/s//name = _first' . i . '/' | let i=i+1

これを作ります。

    firstname = _first1
    secondname = _first1
    thirdname = _first1
    fourthname = _first1
    fifthname = _first1
    sixthname = _first1
    ...

私は別の組み合わせを試しましたが、今はほぼ暗闇の中にいます。私がしようとしているすべては、文字列なしで増分変数を取得するか、静的変数を持つ文字列を取得するようです。 vimscriptでどうすればいいですか?

編集する:

Ingo Karkatに正解を与えた理由は、私の問題に対する解決策を直接案内してくれたからです。子孫のためにこれは私が使用したコードです。

    :let i=1 | 1156,1271g/$/s//\=' = _first' . i/ | let i=i+1

生産:

    firstname = _first1
    secondname = _first2
    thirdname = _first3
    fourthname = _first4
    fifthname = _first5
    sixthname = _first6
    ...

私のコード(プロジェクト関連)の唯一の違いは、1156行から1271行でのみ実行され、テキストを変更せずに行の末尾に追加されることです。

ベストアンサー1

一度使うと代替交換特別、importsの場合、\=すべてがVim式でなければなりません。テキストを前/追加テキストに置き換えることはできません。したがって、静的テキストは文字列でエンコードされ、次のものに関連付ける必要があります.

:let i=1 | g/name/s//\='_first' . i/ | let i=i+1

おすすめ記事