2013-09-04 1 views
3

Am a long time kate пользователь переключается на vim.Vim статическое слово wrap интерактивное «умное» восстановление

Удивительно, имеет ли активизированный vim вариант (или для него был закодирован плагин), чтобы «умно» применять статический перенос слов к большим строкам при кодировании основных языков: C/C++, Java, Python, PHP, (подробнее следовать).

Не только во время записи, но и при применении модификации отступа к визуальному текстовому блоку или (un)? Комментируя его. Давайте ситуацию псевдо-Java, как:

1   String loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipi" + 
    2       "sicing elit, sed do eiusmod tempor incididunt ut " + 
    3       "labore et dolore magna aliqua. Ut enim ad minim v" + 
    4       "eniam, quis nostrud exercitation ullamco laboris " + 
    5       "nisi ut aliquip ex ea commodo consequat. Duis aut" + 
    6       "e irure dolor in reprehenderit in voluptate velit" + 
    7       " esse cillum dolore eu fugiat nulla pariatur. Exc" + 
    8       "epteur sint occaecat cupidatat non proident, sunt" + 
    9       " in culpa qui officia deserunt mollit anim id est" + 
10       " laborum."; 
    ~ 

В какой-то момент хотел бы добавить или удалить несколько уровней отступа, но опираясь в редакторе, чтобы восстановить весь язык предоставлен строку с нашими правилами обертывания статичным слово в. Предположим теперь, по какой-то причине желательно, чтобы удалить два пространства отступа, желаемый результат будет:

1  String loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipisi" + 
    2      "cing elit, sed do eiusmod tempor incididunt ut labo" + 
    3      "re et dolore magna aliqua. Ut enim ad minim veniam," + 
    4      " quis nostrud exercitation ullamco laboris nisi ut " + 
    5      "aliquip ex ea commodo consequat. Duis aute irure do" + 
    6      "lor in reprehenderit in voluptate velit esse cillum" + 
    7      " dolore eu fugiat nulla pariatur. Excepteur sint oc" + 
    8      "caeact cupidatat non proident, sunt in culpa qui of" + 
    9      "ficia deserunt mollit anim id est laborum."; 
    ~ 

который является инструментом для этого будет построен vim?

+0

Не могли бы вы также опубликовать то, что хотите получить? – romainl

+0

Сделано редактировать об этом. – uprego

ответ

1

С Vim, gq команда переформатирует линии; это можно сделать даже с типом :set formatoptions+=a.

К сожалению, встроенные возможности Vim ограничены основными элементами (см. :help fo-table); сложные и специфичные для языка форматы должны предоставляться внешними программами ('formatprg') или Vimscript ('formatexpr'), последний из которых я еще не видел.

Итак, если вам повезет, вы найдете внешнюю программу форматирования кода, которая может быть интегрирована, или вам придется писать такую ​​вещь самостоятельно.

+0

Как «más difícil todavía», когда в какой-то момент (в ближайшем будущем) это работает для меня, вы думаете, что было бы легко заставить его работать и в [vrapper] (http: //vrapper.sourceforge. сеть/дома /)? – uprego

+1

«Vrapper имитирует поведение Vim, все еще используя любой редактор, который вы открыли в верстаке». Поскольку это не Vim, для этого потребуется инструмент для эмуляции опции '' formatprg'', что маловероятно. Мне не нравятся подобные vi-эмуляции, потому что, хотя они обеспечивают в основном полную поддержку оригинальных команд Vi (m), они пропускают большие возможности Vim. –

+0

Возможно, для написания плагина 'vim', который будет использовать команду' fmt' для выполнения этой задачи, что здесь нужно? Кроме того, есть несколько языков, которые умело объединяют строки без знаковых знаков (IINM PHP или Scala), в то время как многие другие (C, C++, Python, Java ...) и плагин должны вести себя соответственно при форматировании каждого языка. Может не вызвать внешнюю команду слишком высокой производительности, но это может быть отправной точкой. – uprego