2017-06-23 6 views
1

テキストのプリアンブルとテキストの終わりを取り除き、途中でいくつかの行を削除することから、テキストの一部を削除するマクロを書きました。保存されたvimマクロは^ Mがあるときに動作させる方法は?

これは、マクロを直接作成して使用するときに動作しますが、次にvimrcファイルにマクロを保存しようとしたが、もう動作しません。

キャリッジリターンを期待通りに動作させるにはどうすればよいですか?

マクロ、私の.vimrcファイルに保存されているようです:

let @r='/+\/-^Mdd' 
let @y='v/A \\ Z\^M<80>kuxGvN/*\^[email protected]' 

結果、私はファイル.vimrcに基づいて、それを使用する場合A \ Zの検索が正常に起動しますが、^ Mということです以下に示すように、新しい行が、それは検索の一部とみなされ、起こることはありません: Output of running the macro

(短縮)問題のファイル:

**** Residual nuclei distribution **** ****   (Bq/cmc)   **** 



    A \ Z 57   58   59   60   61   62   63   64   65   66   67 
154 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 5.64E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 
     +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 8.4 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % 
152 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 4.45E+01 0.00E+00 0.00E+00 0.00E+00 0.00E+00 
     +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 3.8 % +/- 0.0 % +/- 0.0 % +/- 0.0 % +/- 0.0 % 
    A \ Z 1 
    3 4.50E+02 
     +/- 1.6 % 


    **** Isomers (Bq/cmc)  **** 
     A  Z  mth 
     34  17  1 1.37E+04 +/- 35.2 % 
     42  21  1 5.96E-12 +/- 26.1 % 
     44  21  1 6.90E+03 +/- 11.9 % 

期待出力

A \ Z 57   58   59   60   61   62   63   64   65   66   67 
    154 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 5.64E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 
    152 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 4.45E+01 0.00E+00 0.00E+00 0.00E+00 0.00E+00 
A \ Z 1 
3 4.50E+02 

+1

は '^ '' M 'またはリテラル'^M'続い ''で得られたということですか? – romainl

+0

@romainlどのように違いを伝えることができますか? – Neztor

+0

通常のモードで '' ap''を使って、これを記録するのに使われたレジスタの内容を貼り付け、この例では 'a'を' let'代入に変更します。 – Sundeep

答えて

2

私は二重引用符とキーの表記を使用します(出力のホワイトスペースの問題を無視し、それはちょうどので、スタックオーバーフローのです)。

let @r = "/+\\/-\<cr>dd" 
let @y = "v/A \\\\ Z\\<cr>kuxGvN/*\\\<cr>[email protected]" 

基本的に全て、<cr>はキー表記に変換しますリターンを表したもの^M。すべてのキー表記は\と同様に\文字でエスケープする必要があります。

これらの時間を常に利用していることが分かったら、レジスタを使用する代わりにマッピングを作成することをお勧めします。より多くのヘルプを参照してください

:h key-notation 
:h expr-quote 
+0

"...は、マクロを使用する代わりに" "...を使うべきではなく..."でなければなりません。 – romainl

+0

あなたの解決策はいくつかのマイナーな調整を行いました。 'let @r ="/\\/- \ DD "' ' @yましょう= "V/R @ kxGvN/* \ xgg100 \ \\\\ Z"' 違いは前に、単一のバックスラッシュであります – Neztor

関連する問題