Как вставить что-то между тегами HTML в Vim?

Нажатие p вещи вставок ревут текущую строку, dit удаляет вещи в тегах HTML. Как я вставляю что-то в тегах HTML?

    Nor here
<p>I want to paste something here</p>
    Not here
9
задан alexchenco 18 February 2010 в 08:03
поделиться

5 ответов

Результат нажатия P и p зависит от того, что у вас есть в выбранном регистре в данный момент. Если вы удалили или выдернули одну или несколько целых строк (например, с помощью команд dd, Y или Vd), то нажатие P вставит содержимое вашего регистра на line выше текущей строки, тогда как p вставит на строку ниже курсора.

Если вы удалите или выдернете участок текста меньше строки (например, с помощью команд D или yw), то P вставит содержимое вашего регистра непосредственно перед текущей позицией курсора, а p вставит непосредственно после курсора (то есть на той же строке).

Если это поможет, можно считать, что выделение по строке аналогично block html-элементам (таким как

), а выделение по символам аналогично inline html-элементам (таким как span).

Итак, чтобы ответить на ваш вопрос: это зависит от ситуации. Предположим, что у вас в регистре есть линейный участок текста, то перед операцией вставки вы захотите разбить целевой тег на две строки. В вашем примере вместо того, чтобы выполнить dit для удаления содержимого тега, выполните cit для удаления того же участка и перехода в режим вставки. Нажмите return один раз, чтобы вставить новую строку, затем esc, чтобы вернуться в обычный режим, затем P, чтобы вставить ваш регистр через строку над строкой с закрывающим тегом.

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

"_ditP

"_ удаляет текст в регистр black hole, гарантируя, что он не перезапишет то, что находится в вашем регистре по умолчанию. dit удаляет содержимое тега, а P вставляет содержимое вашего регистра по умолчанию перед позицией курсора.

10
ответ дан 4 December 2019 в 08:33
поделиться

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

У меня работает.

11
ответ дан 4 December 2019 в 08:33
поделиться

удалите текущее содержимое между тегами с помощью команды

cit

, которая «изменится в тегах» и как только это содержимое пропал, вы можете вставить средним щелчком или, если вам нужно вернуться в командный режим и использовать свой обычный p / etc.

2
ответ дан 4 December 2019 в 08:33
поделиться

Ответ одинаков для всех языков с поддержкой оптимизации хвостового вызова и поддержкой первоклассных функций (типов функций): так легко эмулировать циклические структуры.

let rec x = seq { yield 1; yield! x};;

Это самый простой способ эмулировать эту структуру, используя лень последовательности. Конечно, вы можете взломать представление списка, как описано здесь .

-121--4112661-

На основе ответа Карра я сделал этот небольшой метод полезности:

private static string ToDelimitedString(string input, int position, string delimiter)
{
  StringBuilder sb = new StringBuilder(input);

  int x = input.Length / position;

  while (--x > 0)
  {
    sb = sb.Insert(x * position, delimiter);
  }

  return sb.ToString();
}

Вы можете использовать его так:

string result = ToDelimitedString("F4194E7CC775F003", 4, "-");

И тестовый случай:

[Test]
public void ReturnsDelimitedString()
{
  string input = "F4194E7CC775F003";

  string actual = ToDelimitedString(input, 4, "-");

  Assert.AreEqual("F419-4E7C-C775-F003", actual);
}
-121--3926311-

vitp должен обрабатывать линейную пасту.

2
ответ дан 4 December 2019 в 08:33
поделиться

Вы можете нажать" v "для визуального отображения, затем перейдите туда, где находится курсор, и нажмите p или P .

0
ответ дан 4 December 2019 в 08:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: