Vim,LaTeX,自动换行和版本控制

时间:2010-04-26 01:30:33

标签: git version-control vim latex word-wrap

我正在用vim编写一个LaTeX文档,并且我用80个字符进行硬包装以使阅读更容易。但是,这会导致跟踪版本控制中的更改时出现问题。例如,在本文开头插入“Lorem ipsum”:

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。

4 个答案:

答案 0 :(得分:16)

无需引入奇怪的编辑政策:您正在寻找的git功能正在使用git diff --color-words来审核更改。

答案 1 :(得分:1)

我认为另一种方法是改变vim窗口的宽度,就像我通常做的那样:

  1. 首先,在.vimrc中添加“set wrap”以启用“wrap”功能;

  2. 为了在虚拟终端中运行vim,我总是将终端的窗口宽度设置为80个字符(如“urxvt -geometry 80x38”)。因此,无论何时我在虚拟终端中的vim中编辑文件,它都会在一行包含超过80个字符时自动换行。

  3. 如果你更喜欢gvim(gtk-vim,gnome-vim),你可以通过在.gvimrc中添加一行来设置gvim窗口的大小,比如“set lines = 38 columns = 80”。

  4. 希望有所帮助。 : - )

答案 2 :(得分:0)

我自己一直在想这样的事情,最后我不得不尝试一些不同的方法来看看哪些有效。我绝对不满意的一件事是硬伤(可以通过set textwidth=80实现),原因如下:

  • 每当我回去编辑以前的文字时,硬线路都会出错。它将超出我的80个字符限制,或者它将超出我的80个字符限制。当然,我可以使用gq运算符的不同变体(例如gqipgqap,可视模式然后gq)在Vim中修复此问题,但这很乏味,我常常怀念gq我的目标区域。这对我来说是艰难休息的最大劣势。 (如果您确实使用gq来修复段落,则可能需要使用set nojoinspace以避免在每个句点后出现恼人的双倍空格。)
  • 我经常让Vim和PDF并排打开。每当我想在PDF中的特定位置编辑某些内容时,我只需搜索文本的片段。你会惊讶于文本中很少有地方以特定的顺序使用两个相当常见的单词,所以这真的很有效。除非你在句子中间有断裂,否则你要搜索的单词之间会有间断。在使用硬中断时,这会频繁地延迟我的工作流程。
  • 我经常使用fFtT在感官范围内导航。这仅适用于同一行。
  • OP提到的问题是Git没有很好地处理难以理解的段落。当然,你可以让差异看起来不错,所以这不是一个大问题。

对我来说,使用软休息(并且每行有一个句子或段落)并不是我采用适合Git的“奇怪的编辑政策”。这是一个(可能是奇怪的)编辑策略,用于在编辑时提高便利性和效率。特别是在单词中间出现的软线断裂我同意看起来很难看,但可以使用set linebreak来关闭。

另外,如果你每行使用一个段落,你应该获得与硬中断相同的“外观”(使用gq正确维护),你可以在一个句子之间导航()。每行一个句子你会得到一个更粗糙的右边缘,但Git和Vim提供的优点是每行一个句子。尝试两种,看看你喜欢什么(我还没有决定)。

答案 3 :(得分:-1)

这就是我解决问题的方法。首先,您可以使用vim命令(在正常状态下)在您的tex文件中搜索超过80个字符的行:

/\%81v.\+/

您可以将其定义为宏,以免记住命令。然后输入正常状态

nF a

(即一点点“n”,一个大写“F”,一个空格“”,一个小“a”,一个“回车”和一个)。这有助于你在言语之后轻轻地打破你的界限。您可以将这五个击键记录为一个宏(如何:在正常状态下按“qa”开始录音,然后执行步骤“nF a”然后按Esc和“q”停止。播放时,按“@a “因为我们已经将宏存入”a“。要播放宏100次(如果你播放它太多次就不会受到伤害;它会在完成所有工作时自动停止)通过在正常情况下按”100 @ a“状态)

这会解决您的问题吗?