2010-11-24 3 views
25

Когда я пишу документы, я нахожусь в соглашении о orginization, соответствующем этому документу, и я хотел бы, чтобы vim синтаксически выделил это соглашение. Но создание ftplugin слишком «глобально», я хочу, чтобы синтаксическая раскраска приходила с документом, поэтому, если я отправлю его где-нибудь без этого плагина, они все равно могут получить раскраску. Я обнаружил, что вы не можете сделать это через modeline, потому что он принимает только варианты.Vim: Как выполнить выделенный текст как команды vim

Прямо сейчас я пытаюсь выяснить, есть ли способ выбрать какой-либо текст в визуальном режиме (или что-то еще, но я использую визуальный режим линии для всего, что было бы хорошо) и выполнить его как серию vim.

Например, в нижней части одного документа у меня есть:

vim highlighting: 
    syn match Comment "^>.*$" 

Как я могу выбрать, что текст и сказать, «бум, выполнить его», вместо того, чтобы ввести его заново?

+0

Отличный вопрос. Я всегда хотел, чтобы вы могли использовать расширенные модели для различных вещей, таких как пользовательские соответствия или подобные вещи. Используется для записи временных ftplugins для этого. – progo 2011-04-14 12:25:14

ответ

37

Вы можете выбрать строки, дергать выбор и выполнить его с

:@" 
+1

Также см. [Http://stackoverflow.com/questions/3997078/how-do-you-paste-text-into-a-vim-colon-command/3997110#3997110] (этот ответ) для более глубокого понимания того, как регистры использования – Benoit 2010-11-24 16:00:37

1

Я определил a few mappings на основе lh-vim-lib, которые не связаны с какой-либо регистр. Это действительно решение overkill, но аккуратное для сопоставлений - поскольку оно никогда не будет изменять регистр по умолчанию.

2

Я хотел бы сделать это отображение, которое потребует от вас сделать визуальный выбор первым и не перепишет свой безымянный регистр:

vmap <space> "xy:@x<CR> 

Если вы хотите написать Vim команды с линией продолжениями:

vmap <space> :w! /tmp/x.vim<CR>:so /tmp/x.vim<CR> 
Смежные вопросы