Как применить команду к каждой строке в выделении в Vim и заменить ее результатом (например, электронной таблицей)? - PullRequest
2 голосов
/ 13 июля 2011

У меня есть таблица значений (фактически написанная в разметке LaTeX), и я могу выбрать один столбец, используя Ctrl+Q

Например,

% Select the second column only ....
1.75130211563   & 0.0299693961831 \\
1.72144412106   & 0.0181406611688 \\
1.92102386609   & 0.0247758598737 \\
1.56512790839   & 0.0137107006809 \\
1.75263937567   & 0.017155656704  \\
1.99501744437   & 0.39550649953   \\
1.96862597164   & 0.030198328601  \\
...

Я бы хотелуменьшить количество знаков после запятой только для выбранных чисел (т. е. для каждого выбранного числа я применяю round(NUMBER * 100)/100, чтобы получить, например, число, округленное до 2 знаков после запятой).Для этого мне нужно сначала иметь переменную, которая будет ссылаться на NUMBER (число в этой строке), а также заменить текущий выбор на выход.

Как мне это сделать?

Также, если это невозможно, я могу скопировать столбец в реальную программу для работы с электронными таблицами и отредактировать ее там, но как мне вставить ее обратно на место?

Обновление: Я принял ответ.Это не так аккуратно, как я надеялся, но это имеет смысл.Спасибо!

Еще одно обновление: Чтобы вставить столбец из внешней электронной таблицы, вставьте столбец в буфер :new, выберите данные с помощью Ctrl+Q и вставьте в регистр.Перейти к верхней строке и соответствующему столбцу таблицы данных и вставить с помощью P.

Ответы [ 2 ]

3 голосов
/ 13 июля 2011

Вы ищете это?

:'<,'>s#\%V\d*\.\d\+#\=round(str2float(submatch(0))*100)/100#g
1 голос
/ 13 июля 2011

Это похоже на работу:

:'<,'>:s/\d\+\.\d\+/\=printf("%.2f", str2float(submatch(0)))/

т.е. визуально выберите первый столбец и введите команду выше.

% Select the second column only ....
1.75   & 0.0299693961831 \\
1.72   & 0.0181406611688 \\
1.92   & 0.0247758598737 \\
1.57   & 0.0137107006809 \\
1.75   & 0.017155656704  \\
2.00   & 0.39550649953   \\
1.97   & 0.030198328601  \\
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...