LINUX.ORG.RU

Вопрос по vim

 


0

1

Есть текст

/**
 * @author SomeAuthor
 * @description Some description here
 * @changed 11.11.11
 */
И есть переменная
:let s:author
Как с помощью Vim загнать значение док-блока в переменную? Копаю в сторону регулярок, но решения найти не могу...(((


Ответ на: комментарий от go2

Считать что? Количество строк «@author SomeAuthor» в документе?
Если внешний скрипт с регулярками подходит опиши более четко задачу (желательно с примерами) - помогу.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

Еще раз задача: есть док-блок

/**
 * @author Zigmund Freid
 * @description F_ck everybody
 * @changed long_ago
 */
И есть соответствующие переменные author, description и changed. Задача в том, чтобы записать в эти переменные соответствующие значения из док-блока, т. е.

author = "Zigmund Freid"
description = "F_ck everybody"
changed = "long_ago"

go2
() автор топика
Ответ на: комментарий от go2

В принципе, если кто-нибудь покажет решение на bash, то я легко перегоню его в vim-script. А по большому счету, любое решение приветствуется. Если не подойдет для конкретной задачи - так для расширения кругозора.

go2
() автор топика
Ответ на: комментарий от go2

Так?

Скрипт:

#!/bin/sh
TOKEN='@changed'
TEXT="/**\n* @author Zigmund Freid\n* @description F_ck everybody\n* @changed long_ago\n*/"
VALUE=`echo -e "$TEXT" | grep "${TOKEN}"| sed s/^.*${TOKEN}\ *//g`
echo "$VALUE"

Однострочник:

TOKEN='@changed';TEXT="/**\n* @author Zigmund Freid\n* @description F_ck everybody\n* @changed long_ago\n*/";VALUE=`echo -e "$TEXT" | grep "${TOKEN}"| sed s/^.*${TOKEN}\ *//g`;echo "$VALUE"

Ну, естественно в реале echo «$TEXT» меняешь на какой-нибудь cat file.txt .

Могут быть приколы когда в TOKEN есть пробелы или в тексте более одного токена, но это поправимо.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от go2

Надо search() для поиска строки с паттерном, потом getline() для получения этой строки и затем разбирать с помощью matchstr()

nickey
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.