2010-04-26 35 views
8

我在vim中編寫了一個LaTeX文檔,並且使用80個字符進行硬包裝以使讀取更容易。但是,這會導致在版本控制中跟蹤更改的問題。例如,在本文的開頭插入 「Lorem存有」:Vim,LaTeX,文字包裝和版本控制

1 Dolor sit amet, consectetur adipiscing elit. Phasellus bibendum lobortis lectus 
2 quis porta. Aenean vestibulum magna vel purus laoreet at molestie massa 
3 suscipit. Vestibulum vestibulum, mauris nec convallis ultrices, tellus sapien 
4 ullamcorper elit, dignissim consectetur justo tellus et nunc.

結果:

1 Lorum ipsum dolor sit amet, consectetur adipiscing elit. Phasellus bibendum 
2 lobortis lectus quis porta. Aenean vestibulum magna vel purus laoreet at 
3 molestie massa suscipit. Vestibulum vestibulum, mauris nec convallis ultrices, 
4 tellus sapien ullamcorper elit, dignissim consectetur justo tellus et nunc.

當我回顧git的這種變化,它告訴我認爲段落的所有行都因包裝而發生了變化,即使只發生了一次語義變化。解決這個問題的一個辦法是讓每一句話都在自己的路線上。這看起來渲染文檔中的相同,但源現在是難讀,因爲每一行都有相當不同的線路長度:

1 Lorum ipsum dolor sit amet, consectetur adipiscing elit. 
2 Phasellus bibendum lobortis lectus quis porta. 
3 Aenean vestibulum magna vel purus laoreet at molestie massa suscipit. 
4 Vestibulum vestibulum, mauris nec convallis ultrices, tellus sapien ullamcorper elit, dignissim consectetur justo tellus et nunc.

(如果在80我軟包,事情仍然期待不好,只是以不同的方式。)

是否有可能在我的文本在磁盤上每行一個換行符,但在vim中顯示和編輯它,就好像每個段落的文本是一個長行,軟包裝在80個字符?我認爲它需要一些vim-foo而不是調整git或LaTeX。

+0

嗯,看到這個問題之前,我想你的軟包裝作爲一種解決方案的猜測是正確的,但不記得在哪裏可以找到「vim-foo」...... – 2010-04-26 01:36:53

回答

15

不需要引入奇怪的編輯策略:您正在尋找的git功能使用git diff --color-words來查看更改。

+2

謝謝!這比我期待的要簡單得多。 – Bkkbrad 2010-04-26 01:51:17

+3

爲了澄清,git仍將所有行都視爲已更改,但它恰好突出顯示了已更改的單詞。 – Bkkbrad 2010-04-26 01:55:04

+1

@Bkbkrad:對,它只會改變'diff'向你呈現這種變化的方式。順便說一句,對於git,CVS或SVN,您可以使用'vim'的差異視圖和vcscommand插件(http://code.google.com/p/vcscommand/)。它突出顯示了改變後的單詞以及更改後的單詞 – 2010-04-26 01:56:33

0

我想的另一種方式是改變Vim窗口的寬度,像我平時做的:

  1. 首先,把「集包裝」在.vimrc裏,使「包裝」功能;

  2. 對於在虛擬終端中運行vim,我總是將終端的窗口寬度設置爲80個字符(如「urxvt -geometry 80x38」)。因此,無論何時我在虛擬終端中編輯vim中的文件時,如果一行中包含超過80個字符,它將自動換行。

  3. 如果您更喜歡gvim(gtk-vim,gnome-vim),您可以通過在.gvimrc中添加一行來設置gvim窗口的大小,如「set lines = 38 columns = 80」。

希望有所幫助。 :-)

-1

這就是我解決問題的方法。首先,你可以使用vim命令(在正常狀態)來搜索您的TEX文件超過80個字符長的線:

/\%81v.\+/ 

你可以把它定義爲一個宏,以便不記得的命令。然後你在正常狀態

nF a 

型(即小「N」,一個大寫字母「F」,空格「」,有點「一」,一個「回車」,和)。這有助於你在一段話後輕輕地打破你的界限。您可以將這五個按鍵記錄爲一個宏(howto:在正常狀態下按「qa」開始錄製,只需執行「nF a」的步驟,然後按Esc和「q」停止播放時,按「@a 「,因爲我們已經把宏存儲爲」a「,要玩宏100次(如果你玩的次數太多,它不會受到傷害;在完成所有工作時它會自動停止),在正常情況下按」100 @ a「狀態)

這是否解決了您的問題?

+0

對不起,這可能會對vim中的單詞換行有所幫助,但這並不能解決我的問題,即如何讓git明白單個改變的單詞在硬包裝時不應影響整個段落。不過感謝您考慮這個問題! – Bkkbrad 2012-07-25 01:56:32

+0

不知怎的,我喜歡單詞包裝,因爲我認爲(儘管也許你覺得包裝的段落很難閱讀),包裝不僅解決了你的問題,而且還促進了未來工作,如代碼摺疊和通過gmail發送電子郵件補丁(gmail包裝單行在文本模式下,如果它太長,所以如果您發送了補丁,可能會出現問題)。除此之外,我認爲LaTeX系統鼓勵人們打包長段落,因爲它只是將一個換行符視爲一個空白區域。你怎麼看? – 2012-07-25 02:35:17