私は今日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