Vim Surround: создайте новый тег, но не делайте отступ / новую строку - PullRequest
4 голосов
/ 23 мая 2011

Я хотел бы имитировать Textmates CTRL + ALT + w, который создает новую пару открывающих и закрывающих HTML-тегов в одной строке.

В VIM Surround я использую CTRL + st в режиме редактирования для этого, но он всегда имеет отступ и создает новую строку после установки тега, чтобы он выглядел так (* = позиция курсора):

<p>
  *
</p>

Есть ли способ достичь этого? :

<p>*</p>

Ответы [ 5 ]

3 голосов
/ 23 мая 2011

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

Возможно, вы захотите создать «символьно»выделение, с v перед окружением.

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


Обновление

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

В вашем случае я рекомендую взглянуть на HTML AutoCloseTag .Этот плагин закрывает тег html после того, как вы наберете >.Он, безусловно, более уместен и использует меньше нажатий клавиш, чем объемный.

<p         <--- Now when you type ">", if becomes:
<p>|</p>   <--- Where "|" is the cursor.

Очевидно, вы получите это поведение для каждого тега.Но это может быть удобно, если вам это нравится.

0 голосов
/ 17 августа 2013

Наткнулся на этот вопрос, потому что мне тоже было интересно - я считаю, что самый простой способ сделать это просто:

yss<p>

(yss окружает строку чем-то без отступа - см. Здесь:http://www.catonmat.net/blog/vim-plugins-surround-vim/)

0 голосов
/ 12 апреля 2013

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

Чтобы создать новый тег, окружающий элемент без автоматического отступа, который Vim Surround использует при использовании выбора по блокам (например: VysS ), вместо этого вы можете сделать что-то вроде:

^ YS $

Эта команда переместит ваш курсор к первому непустому символу строки, введите команду, которую вы хотите использовать You Surround, и переместитесь в конец строки. Затем просто начните вводить тег.

Результат таков:

<input type="email" name="email">

Может стать что-то вроде этого:

<li><input type="email" name="email"></li>

Команда также повторяется с . и всеми другими добрыми качествами Vim.

0 голосов
/ 18 февраля 2013

Мой ответ, вероятно, опаздывает, но я постараюсь помочь. У меня была похожая проблема с плагином Vimsurround. Каждый раз, когда я выбираю предложение (одна строка) с помощью Ctrl + V и пытаюсь окружить его чем-то, я получаю следующее:

{
var myVar
}

вместо этого:

{ var myVar } // what I wanted

Я нашел простое решение: в обычном режиме я выбираю строку с командой vis , а затем набираю заглавную C (мое отображение окружения vim) и выбираю квадратные скобки для окружения. Затем я получаю одну строку красиво окруженной .

0 голосов
/ 23 мая 2011

В обычном режиме введите vstp>, чтобы войти в визуальный режим и вывести открывающий и закрывающий тег <p> в той же строке в текущей позиции курсора. Используйте заглавную букву S для поддержания текущего уровня отступа.

Это не помещает курсор между тегами, как вы описываете, но и не делает Ctrl W ярлыка TextMate (я думаю, что вы имели в виду CTRL + Shift + w, а не CTRL + ALT + w, поскольку последний выводит только ромб.)

...