2014-02-06 1 views
1

Я только что установил сладкий vim plugin, который обеспечивает context colouring для javascript. Я искал цвета, чтобы они были в порядке, и я очень доволен. Тем не менее, бывают случаи, когда я не хочу контекстную окраски:Vim: Как составить поиск с помощью другой команды?

  1. в режиме вставки, так как окраска не работает хорошо, пока я редактирование
  2. , когда я поиск, так как раскраска кажется, переопределить результаты поиска ЛХ

я решил первую проблему с:

autocmd InsertEnter *.js :JSContextColorToggle 
autocmd InsertLeave *.js :JSContextColorToggle 

Однако вторая проблема сложнее. Сначала я подумал, что могу просто нарисовать /, мой ключ поиска, чтобы он сначала переключил контекстную раскраску, а затем выполнил поиск. Однако я не смог понять, как писать это сопоставление. Как мне сохранить «исходное значение /» для использования на моей карте?

Thanks,

p.s. ознакомьтесь с этой красивой контекстной раскраской (с solarized). enter image description here

ответ

2

/ войдет в командный режим.

Если вы хотите только переключать подсветку с помощью /, я думаю, вам нужно map <expr>.

что-то вроде

nnoremap <expr>/YourFunction() 

в YourFunction(), вы сначала сделать turn off the syntax hi, а затем возвращают /.

Однако вам нужно подумать о том, когда нужно восстановить hi. вы можете создать другое отображение режима команды, map <cr> до первого turn on the js hi, а затем вернуть <cr>.

или просто создать автозапуск, при входе в нормальный режим включите подсветку.

Я не тестировал выше идеи, надеюсь, что это поможет.

+0

Вы поднимаете хорошую точку: когда нужно восстановить окраску. Я подумаю об этом немного, прежде чем принять ваш ответ. – Ziggy

3

Привет Я являюсь автором плагина. Я исправил конфликт с hlsearch, поэтому он должен просто работать сейчас (попробуйте вытащить последнюю версию из git, я еще не обновил vim.org.)

Что касается поведения режима вставки, существует разница в поведении между vim 7.3 и 7.4. 7.4 имеет события «TextChanged» и «TextChangedI», которые срабатывают при изменении текста в обычном режиме и режиме вставки соответственно. Это вызывает обновление подсветки. Однако событие TextChangedI запускается только при выходе из режима вставки. Поэтому, если это ваше поведение, вы можете получить его, обновив до 7.4. В 7.3 мне пришлось подключиться к событию cursormoved, который проверяет переменную b: changetick, которая обновляется vim всякий раз, когда происходят изменения ... Я не уверен, что это может произойти во время режима вставки, но я думаю, что это может быть объясняет нечетное поведение, если вы используете 7.3.

Я все еще пытаюсь выяснить, какое лучшее поведение должно быть в режиме вставки ...его сложность, потому что синтаксис кода у меня недействителен во время редактирования, и когда код не может быть разобран, плагин не может работать (и вы увидите регулярное выделение синтаксиса .. это может быть хорошо, поскольку одно значение подсветки синтаксиса - визуальная синтаксическая проверка !). Другой вариант заключается в том, чтобы предположить, что он является тем же уровнем, что и в момент начала редактирования, и смещает следующий текст, однако многие символы добавляются/удаляются во время редактирования. Еще один вариант - иметь подсветку синтаксиса в редактируемой области (текущая строка?).

+0

Я думаю, что отключение контекстной раскраски в режиме вставки - это путь. Семантически это имеет смысл: вы «бросаете» в контекст кода, который вы хотите отредактировать, поэтому вы теряете вид с высоты птичьего полета. «Визуальная проверка синтаксиса» действительно велика: я больше не забываю определения ',' в определениях объектов, потому что контекстная раскраска отказывается возвращаться. Хороший побочный эффект! – Ziggy

+0

Я думаю, что я собираюсь принять другой ответ, хотя вопрос был «как составить поиск с другой командой». Однако ваше исправление устраняет проблему. – Ziggy

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