2010-04-26 1 views
8

Я пишу документ LaTeX в vim, и у меня есть жесткая упаковка на 80 символов, чтобы упростить чтение. Однако это вызывает проблемы с отслеживанием изменений в управлении версиями. Например, вставка "Lorem Ipsum" в начале этого текста:Vim, LaTeX, word-wrapping и управление версиями

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.

Когда я рассматриваю эти изменения в мерзавца, он говорит что все строки абзаца изменились из-за обертывания, хотя произошло только одно семантическое изменение. Один из способов решения этой проблемы состоит в том, чтобы иметь каждое предложение по собственной линии. Это выглядит так же в оказанной документе, но источник теперь труднее читать, потому что каждая линия имеет совсем другую длину линии:

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» ... –

ответ

15

Не нужно вводить странные правила редактирования: функция git, которую вы ищете, использует git diff --color-words для просмотра изменений.

+2

Спасибо! Это было намного проще, чем я ожидал. – Bkkbrad

+3

Чтобы уточнить, git по-прежнему рассматривает все строки как измененные, но он прекрасно выделяет только те слова, которые были изменены. – Bkkbrad

+1

@Bkkbrad: Правильно, это только изменяет способ отображения 'diff', который вам изменяет. BTW, для git, CVS или SVN вы можете использовать опцию 'vim' diff с помощью плагина vcscommand (http://code.google.com/p/vcscommand/). Он выделяет измененные слова в дополнение к измененным блокам. –

0

Я думаю, альтернативный способ заключается в изменении ширины окна Vim как то, что я обычно:

  1. на первый, поставил «установить обертку» в .vimrc, чтобы включить «обернуть» функцию ;

  2. Для запуска vim в виртуальном терминале я всегда устанавливаю ширину окна терминала как 80 символов (например, «urxvt -geometry 80x38»). Таким образом, в любое время, когда я редактирую файл в vim в виртуальном терминале, он автоматически обернется, когда строка содержит более 80 символов.

  3. Если вы предпочитаете gvim (gtk-vim, gnome-vim), вы можете просто установить размер окна gvim, добавив строку в .gvimrc, например, «set lines = 38 columns = 80».

Надеюсь, что это поможет. :-)

-1

Вот как я решаю проблему. Во-первых, вы можете использовать команду VIM (в нормальном состоянии) для поиска файла текс для линий длиной более 80 символов:

/\%81v.\+/ 

вы можете определить его как макрос, чтобы не запоминать команды. Затем вы вводите в нормальном состоянии

nF a 

(то есть, немного «п», заглавная «F», пробел «», немного «а», «Enter», и). Это поможет вам сломать вашу линию мягко после некоторого слова.Вы можете записать эти пять ключевых штрихов в качестве макроса (как: в нормальном состоянии нажмите «qa», чтобы начать запись, и просто выполните шаги «nF a», а затем нажмите Esc и «q», чтобы остановить. При воспроизведении нажмите «@a «потому что мы сохранили макрос в« a ». Чтобы воспроизвести макрос 100 раз (это не повредит, если вы играете его слишком много раз, он просто автоматически останавливается при завершении всего задания), нажимая« 100 @ a »в обычном режиме status)

Реально ли это решить вашу проблему?

+0

Извините, это может быть полезно при переносе слов в vim, но это действительно не касается моего вопроса о том, как заставить git понять, что одно измененное слово не должно влиять на весь абзац, когда происходит жесткая упаковка. Спасибо за то, что подумал о проблеме! – Bkkbrad

+0

Как-то мне нравится перенос слов, потому что я думаю (несмотря на то, что, может быть, вы чувствуете, что обернутые абзацы трудно читать) упаковка не только решает вашу проблему, но также облегчает будущую работу, такую ​​как сворачивание кода и исправления электронной почты через gmail (gmail обертывает одну строку в текстовом режиме, если он слишком длинный, поэтому, если вы отправили свои исправления, могут возникнуть проблемы). Помимо всего этого, я думаю, что система LaTeX поощряет людей к переносу длинных абзацев, поскольку она просто рассматривает один разрыв строки как пробел. Как вы думаете? –

 Смежные вопросы

  • Нет связанных вопросов^_^