2

Хотя я уже давно пользуюсь Vim, я все еще новичок в настройке. Я не уверен, что то, что я имею в виду, может быть сделано. Вот что я хотел бы сделать: при написании bash-скрипта у меня есть шаблон для комментирования функции

1  #!/bin/bash
2
3  ###########################################################
4  # template
5  # globals:
6  #   none
7  # returns:
8  #   none
9  ###########################################################
10
11
12 my_function () {
13 ...

В настоящее время я делаю, чтобы поместить курсор в line 11 а затем выполнить команду:

:3,9y

Это сносит строки 3-9 в буфер. Затем я нажимаю p и он вставляет строки после курсора. Я хотел бы упростить этот процесс. Можно ли добиться описанного выше поведения, определив что-то вроде макроса? В идеале я бы определил его как файл .vimrc а не полагался на сценарий, чтобы шаблон имел точность в строках с 3 по 9.

2 ответа2

2

Вы можете поместить текст вашего баннера в именованный регистр:

let @c  = "###########################################################\n"
let @c .= "# template\n"
let @c .= "# globals:\n"
let @c .= "#   none\n"
let @c .= "# returns:\n"
let @c .= "#   none\n"
let @c .= "###########################################################"

и положить его с:

"cp
1

фрагменты похожи на встроенные :abbreviate на стероидах, обычно с вставками параметров, зеркальным отображением и несколькими остановками внутри них. Одним из первых, очень известных (и до сих пор широко используемых) плагинов Vim является snipMate (вдохновленный редактором TextMate ); к сожалению, это больше не поддерживается; хотя есть вилка. Современная альтернатива (для которой требуется Python) - это UltiSnips. Есть и другие, смотрите этот список в Vim Tips Wiki.

Есть три вещи, которые нужно оценить: во-первых, особенности самого движка сниппета, во-вторых, качество и широта фрагментов, предоставленных автором или другими; в-третьих, как легко добавлять новые фрагменты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .