2013-02-19 2 views
0

Желаю, чтобы я мог форматировать фрагменты текста в стандартных текстовых файлах.
Я хотел бы, чтобы выбрать фразу или слово, вызвать простую команду, и отформатировать его с этим форматированием:Как создать файл синтаксиса для текстовых файлов?

  • смелой
  • наклонного
  • подчеркиванием
  • красного цвета шрифта
  • желтого цвет фона

Возможно ли это? (что-то вроде подсветки синтаксиса в файлах vim, но в моем случае с выделенным текстом)

Я знаю, что есть плагин Txtfmt в vim, я пробовал его 2 раза в последние годы, но каждый раз удалял его.
Вот почему:

  1. Там нет никакого способа визуального выбора текста и форматировать его, вы должны вставить начать код в командной строке написать текст и вставить конец кода в командной строке.
  2. Вы не можете скопировать текст, потому что плагин Txtfmt вставляет скрытые коды форматирования в текст
  3. Это слишком сложно, чтобы вставить начальный код и конечный код в командной строке (после вызова общей команды), а коды слишком сложны

ответ

1

В текст должен быть вид разметки. Vim работает в обычном тексте, у него нет отдельного слоя метаданных, например текстового процессора. С подсветкой синтаксиса и новой функцией скрывают функцию, вы можете частично заставить Vim выглядеть как WYSIWYG, но на самом деле вы все еще работаете с необработанным текстом.

Если вы в порядке с этим ограничением и хотите использовать Vim для своих задач редактирования, я бы предложил использовать существующее решение разметки вместо того, чтобы изобретать новый с нуля. К настоящему времени есть несколько синтаксисов на выбор: Markdown, вероятно, является фаворитом. (Он также используется здесь для переполнения стека!) С существующим синтаксисом вы можете использовать все существующие плагины/сопоставления/команды и даже некоторые внешние инструменты (например, для преобразования в HTML).

+0

Я не очень хорошо понимаю, что вы имеете в виду. Вы имеете в виду, что мне нужно найти плагин для уценки текста на html? – Reman

+0

Преобразование в HTML - это просто дополнительный бонус. В основном, ': setl filetype = markdown' в вашем буфере и начать использовать синтаксис Markdown; он позволяет выделить полужирный, курсив и т. д. –

+0

А хорошо. Я установил плагин markdown (http://www.vim.org/scripts/script.php?script_id=1242), это правильно? Затем я помещаю команду ': setl filetype = markdown' в свою командную строку и могу использовать уценку. Это верно? Но теперь у меня есть символы «*» и «#» в моем тексте, не так ли? – Reman

1

Вот, возможно, самая простая возможная реализация того, что я считаю нужным. Он позволяет выделить пользовательские строки в текущем буфере, используя цвет/стиль, который вы описываете. Пользовательские строки, которые вы хотите выделить, не могут быть сохранены между сеансами Vim.

Во-первых, определить группу выделения SpecialTxt для заказных подсветке:

au ColorScheme * hi SpecialTxt guibg=yellow guifg=red gui=bold,underline,italic 

(обратите внимание, что это должно быть сделано через autocmd так, что загрузка новой цветовой гамме не перезаписать его).

Теперь вы можете выбрать любое регулярное выражение, чтобы наследовать этот цвет с помощью:

call matchadd('SpecialTxt', [YOUR_REGEX], 1) 

Или вы могли бы написать простую команду для установки матча:

command! -nargs=1 Special :call matchadd('SpecialTxt',"<args>",1) 

Или создать карту так, чтобы дважды нажатие на слово устанавливает его на эту раскраску:

nnoremap <silent> <2-LeftMouse> :call matchadd('SpecialTxt',expand('<cword>'),1)<CR> 

Надеюсь, что это поможет. Извиняюсь, если это не совсем то, что вам нужно.

+0

Очень приятно, но я все равно не могу сделать именно то, что хочу. 1) Ваше решение соответствует всем словам в тексте, как слово, которое я дважды щелкаю. 2) Я все еще не могу выбрать фрагмент текста (несколько слов или фразу) и выделить его. 3) Еще одна проблема заключается в том, что после перезапуска все выделения исчезли. (это не тот случай, когда я использую p.e. синтаксис vim). – Reman

+1

Где вы хотите, чтобы в магазине выделялась подсветка (если не как разметка в самом тексте) ?! –

+0

Ты прав. Его все новое для меня, извините. – Reman

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