2015-12-07 72 views
0

我是vim-surround的新手。我想實現以下目標。使用帶函數參數的vim-surround

我有很多圖片的HTML文件,因爲這(*爲光標位置):

<img src="ima*ges/pages/img1.jpg" alt=""> 

而且我想用這個來改變它:

<img src="{{ media_url('images/pages/img1.jpg') }}" alt=""> 

我試過ys"f但它不能按預期工作。我想用這樣的模式來更改所有的jpg圖像,我知道vim-repeat,一旦我可以正確地更改第一個,我會深入研究它。

如果你知道一個方法來實現這一切所有jpg的事件,我會非常感激。

非常感謝。

回答

0

您需要記錄一個宏,然後在所有圖像上執行。

在正常模式下將光標置於第一 「的記錄開始用QQ,然後宏:

CS」'va'hSbimedia_urlbvf)s {} GVS GVS「Q

現在已經記錄在宏q寄存器,執行它惠特@q。

將自己置於下一張圖片(「)和@q。你可以將它與find(/「ima)結合,然後結合n和@q。

如果你在錄製宏時用自己的下一個詞找到自己的位置,你可以用數字前綴宏... 10 @ q在10上執行它圖片....

+0

謝謝您的回答!我正在嘗試用一個項目解決問題,但是當我到達下劃線時,某些東西似乎出錯了。當我輸入'cs''va'hSb'時,我得到,但是當我一打開'_'就開始輸入'media_',我就到達行的開始。 –

+0

對不起,我沒有插入因爲我無法在這裏粘貼q註冊內容,所以大多數特殊字符都被吃掉了 – Sim

+0

謝謝,現在我有類似的問題,但是離開插入模式並返回到surround命令。在輸入'i'後,vim進入插入模式,但是如何告訴vim這實際上是環繞命令的一部分?也許命令必須分成兩部分?我非常理解第一部分'cs''va'h',而不是其他部分。 –

0

:substitute似乎是這項工作更好地適應:

:s#\v<img src="\zs\S{-}\.jpg\ze"#{{ media_url('\1') }}#g 

如果你不想改變所有的人,在g之後添加c之前徵求用戶同意每個周圍。

+0

謝謝你的回答!我得到''Pattern not found:\ v

2

Pe從前,我是定製環境的忠實粉絲。周圍,​​通過添加以下到~/.vim/after/ftplugin/html.vim定製的

例子:

let b:surround_{char2nr('m')} = "{{ media_url('\r') }}" 

現在,在文件的與htmlFileType可以使用m周圍。可能最好有兩個環境一個用於花括號,另一個用於media_url功能。

欲瞭解更多信息,請參閱:h surround-customizing