2010-04-26 4 views
8

Je suis en train d'écrire un document LaTeX dans vim, et je l'ai enveloppé de 80 caractères pour faciliter la lecture. Toutefois, cela entraîne des problèmes de suivi des modifications avec le contrôle de version. Par exemple, insérer "Lorem ipsum" au début de ce texte:Vim, LaTeX, l'empaquetage de mots et le contrôle de version

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.

résultats dans:

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.

Lorsque je passe en revue ce changement git, il dit moi que toutes les lignes du paragraphe ont changé à cause de l'emballage, même s'il n'y a eu qu'un seul changement sémantique. Un moyen de contourner ce problème est d'avoir chaque phrase sur sa propre ligne. Cela semble même dans le rendu document, mais la source est maintenant plus difficile à lire, parce que chaque ligne a tout à fait une longueur de ligne différente:

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.

(Si je pellicule souple à 80, les choses semblent encore mauvais, juste d'une manière différente.)

Est-il possible d'avoir mon texte sur le disque avec une nouvelle ligne par phrase, mais l'afficher et l'éditer dans vim comme si le texte de chaque paragraphe était une longue ligne, doux emballé à 80 caractères? Je suppose que cela nécessite du vim-foo plutôt que de bidouiller git ou LaTeX.

+0

Hmm, vu ce problème avant, je pense que votre hypothèse sur soft wrap comme une solution est bonne, mais ne me souviens pas où trouver "vim-foo" ... –

Répondre

15

Inutile d'introduire des règles d'édition étranges: la fonctionnalité git que vous recherchez utilise git diff --color-words pour vérifier les modifications.

+2

Merci! C'était beaucoup plus simple que ce à quoi je m'attendais. – Bkkbrad

+3

Pour clarifier, git considère toujours toutes les lignes comme changées, mais cela ne fait ressortir que les mots qui ont été changés. – Bkkbrad

+1

@Bkkbrad: En effet, cela change seulement la façon dont 'diff' vous change. BTW, pour git, CVS ou SVN, vous pouvez utiliser la vue diff de 'vim' avec le plugin vcscommand (http://code.google.com/p/vcscommand/). Il met en évidence les mots modifiés en plus des blocs modifiés. –

0

Je pense qu'une alternative est de changer la largeur de la fenêtre de vim comme ce que je faisais habituellement:

  1. dans un premier temps, mettre « set wrap » dans le Vimrc pour activer la fonction « wrap » ; Pour exécuter vim dans un terminal virtuel, je définis toujours la largeur de la fenêtre du terminal sur 80 caractères (comme "urxvt -geometry 80x38"). Ainsi, chaque fois que je modifie un fichier dans vim dans le terminal virtuel, il s'enroulera automatiquement lorsqu'une ligne contiendra plus de 80 caractères. Si vous préférez le gvim (gtk-vim, gnome-vim), vous pouvez simplement définir la taille de la fenêtre gvim en ajoutant une ligne dans .gvimrc, comme "set lines = 38 columns = 80".

Espérons que ça aide. :-)

-1

Voici comment je résous le problème. D'abord, vous pouvez utiliser la commande vim (en état normal) pour rechercher votre fichier tex pour les lignes de plus de 80 caractères:

/\%81v.\+/ 

vous peut le définir comme une macro pour ne pas se rappeler les commandes. Ensuite, vous tapez dans le statut normal

nF a 

(qui est un peu "n", un capital "F", un espace "", un peu "un", un "Enter", et un). Cela vous aide à casser votre ligne doucement après un mot.Vous pouvez enregistrer ces cinq coups de touches comme une macro (comment: en mode normal, appuyez sur "qa" pour lancer l'enregistrement et effectuez simplement les étapes "nF a", puis appuyez sur Esc et "q" pour arrêter. "parce que nous avons stocké la macro dans" a "Pour jouer la macro 100 fois (ça ne fait pas de mal si vous la jouez trop souvent, elle s'arrête automatiquement quand vous terminez tout le travail) en appuyant sur" 100 @ a " état)

Est-ce que cela résout votre problème?

+0

Désolé, cela peut être utile avec le mot-emballage dans vim, mais cela ne répond pas vraiment à ma question sur la façon d'avoir git comprendre qu'un seul mot changé ne devrait pas affecter un paragraphe entier quand il y a hard-wrapping. Merci d'avoir pensé au problème, cependant! – Bkkbrad

+0

D'une certaine façon, j'aime le mot-emballage parce que je pense (malgré que vous avez peut-être des paragraphes difficiles à lire) résout non seulement votre problème mais facilite également le travail futur comme le pliage de code et les correctifs email via gmail. en mode texte si c'est trop long, donc si vous avez envoyé vos correctifs, il pourrait y avoir des problèmes). En plus de tout cela, je pense que le système LaTeX encourage les gens à envelopper de longs paragraphes, car il ne traite qu'un seul interligne comme un espace blanc. Qu'est-ce que tu penses? –