2017-08-30 64 views
0

我使用vim(和vim latex-suite)編輯乳膠文檔。經常發生的事情是需要將內聯公式轉換爲顯示的公式,如下所示。我開始:在vim中圍繞着一個乳膠方程

The most important equation is \(f(x)=x^2,\) but most disagree. 

,並結束與:

The most important equation is 
    \begin{equation*} 
    f(x)=x^2, 
    \end{equation*} 
    but most disagree. 

隨着光標的「=」我很高興能調用一個函數來實現的結果,我大概可以計算出如何編輯縮進和間距我自己,所以這將是足夠的輸出

The most important equation is 
\begin{equation*} 
f(x)=x^2, 
\end{equation*} 
but most disagree. 

理想情況下,在相反的方向(顯示公式內聯式)的作品將是巨大的功能,但是第一款T首先打。 FWIW,我使用的是surround.vim插件,這對於\(\)中的周圍文本來說似乎很棒,但我不確定它是否可以用來檢測/突出顯示乳膠方程。它似乎具有HTML標籤的這個功能,但我沒有看到它爲乳膠實施。任何幫助將不勝感激。

[編輯:]

爲了澄清什麼,我尋找,我會說這是surround.vim是否可用於定製不對稱報價/支架檢測。這是我知道如何去做的。在我的〜/ .vimrc文件,我也行

autocmd FileType tex let b:surround_101 = "\\(\r\\)" 

然後當我在編輯TEX文件,我有以下幾點:

This is a $word in$ a some text. 
      [ ] 

我可以在正常模式下鍵入:

cs$e 

,我得到

This is a \(word in\) a some text. 
     [ ] 

西米larly,如果我有

This is a <p>word in</p> a some text. 
       [ ] 

我可以在正常模式下鍵入:

cste 

,我得到

This is a \(word in\) a some text. 
     [ ] 

我希望做的是從這個去:

This is a \(word in\) a some text. 
      [ ] 

對此:

This is a \foo word in \bar a some text. 
     [ ] 

我想知道這是否可以用surround.vim。例如,在此:

This is a \(word in\) a some text. 
      [ ] 

我試圖

cse$ 

,但並沒有改變\(字\)至$字$我所希望的。如果這不可能用於環繞聲。vim,這將是一個恥辱,因爲它已經具有我想要的乳膠方程的HTML標籤的確切功能,所以看起來我必須從零開始重新編碼乳膠方程的相同功能。

+0

到目前爲止,您有嘗試過什麼嗎?通過展示您的嘗試並描述您遇到困難的部分,我們可以更好地瞭解您的熟練程度並提供更準確的答案。就目前而言,它看起來像你已經發布了一個要求,並希望有人爲你寫代碼。 –

+0

是的,surround.vim可以做到這一點;看看':help surround-customizing'。環繞聲不檢測(乳膠方程式或其他);你可以在'ys'後面輸入相應的_replacement_選擇周圍的類型。 –

+0

我編輯了我的帖子來澄清我的問題,並舉例說明了我所嘗試的內容。 – joelwatsonfish

回答

0

您可以surround.vim文的封裝與\foo ... \bar本:現在

let b:surround_102 = "\\foo \r \\bar" 

ys2wf將圍繞下一2w ORDS; f是(任意)選擇的替換符號,對應於:echo char2nr('f') =>102

這記錄在:help surround-customizing下。它定義了一個自定義替代。爲了將\(...\)轉換爲\foo ... \bar(反之亦然),您還必須定義一個自定義目標(cp :help surround-targets)。不幸的是,該插件目前不支持該插件;只支持一組固定的目標,這些標籤在插件內部作爲特殊情況實現。至少在這種情況下的字面替換,我看不出爲什麼插件不能支持這些。哦,看,有人已經opened an issue正是這個!

還有其他插件,如vim-sandwich。到目前爲止,我只是簡單地看了一下這個插件,但它似乎有很好的可定製性,所以它可能在那裏工作。