vim abbr: как остановить создание новой строки?

#vim #vi

#vim #vi

Вопрос:

в vimrc, если я сделаю

 iab YBK left<right><Left><Left><Left><Left><Left><Left><Left>
  

затем, когда я набираю YBK , у меня будет

 left<
_right>
  

где _ находится курсор. Это в значительной степени то, что я хочу, за исключением того, что vim автоматически генерирует разрыв строки перед позицией курсора, так как я хочу

 left< _ right>
  

Итак, как избежать неприятности разрыва строки? Спасибо.

Комментарии:

1. Я не могу воспроизвести это поведение. Какой стиль окончания строки вы используете в своем .vimrc файле?

2. @ib. interesting. Есть ли команда для отображения стиля окончания строки, используемого vim? для меня это просто среда latex, поэтому я не уверен, что виновником была конфигурация синтаксиса latex.

Ответ №1:

посмотрите на surround.vim. Я думаю, вы можете расширить его своими собственными парами «открыть / закрыть». Это поведение уже построено для нескольких типов пар. Два примера, которые вызовут ваш интерес:

  • vS C-] (завершается { } с новыми строками вокруг нее и отступом в соответствии с настройками отступа типа файла

  • vS C-< para Enter (перенос в <para> </para> ), пример:

.

 the quick fox jumped over
  

(наведите курсор на q in quick, нажмите v2eS C-< para Enter

Результат:

 the <para>
    quick fox
</para> jumped over
  

Редактировать

Похоже, что, возможно, вы хотели, чтобы это было наоборот — без разрывов строк. Тогда используйте vs<para Enterили vS{ соответственно, которые по умолчанию не вставляют разрывы строк

Комментарии:

1. Спасибо за предложение. Я предпочитаю решение без плагинов, если только нет встроенного способа сделать это abbr , но я попробую плагин, если этот способ невозможен.