У меня есть некоторые данные, разделенные пробелом, которые структурированы в логические столбцы.

Например:

-71.12 0.150667281077312 0.002211111620961
-71.12 0.118496551977185 0.001861996157838
-71.12 0.060235544965347 0.002297217048708
-71.12 0.153327288481261 0.006010183052808
-71.12 0.124123948663225 0.002061072004207
-71.12 0.207259139445973 0.006717235817697
-60.96 0.157543582366536 0.002296431543423
-60.96 0.235150926363369 0.003101414303501
-60.96 0.259568965388604 0.00509310173342
-60.96 0.249144803559256 0.005918713226128
-60.96 0.293059928383778 0.004162901523096
-60.96 0.450566914005046 0.007136854816405
-50.8 0.750617196149124 0.009051035617119
-50.8 0.353984107758976 0.004572175646195
-50.8 0.528151230868303 0.007799510359974
-50.8 0.183651354357074 0.005641329790889
-50.8 0.41466714360944 0.005488604915895
-50.8 0.59927731014109 0.008919537503349
-40.64 0.535018719259586 0.006512021643672
-40.64 0.796646452506777 0.011224718752927
-40.64 0.484977557781429 0.006918056698062
-40.64 0.823404773156849 0.011420881130741
-40.64 0.723696626287657 0.008809901349382

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

mbWWDGo<Esc>p'bj

Тем не менее, я хотел знать, есть ли встроенный способ вырезать и вставлять это как одну логическую единицу. Выбор по блокам не будет делать, потому что линии не являются регулярными. Изменение пробелов на вкладки кажется хорошей идеей, но у меня также есть несколько очень коротких строк, таких как:

0 1 0.012098302364638

Так что это не обязательно будет работать (если я не установлю свой таб-стоп на что-то сумасшедшее).

Любые идеи, или макрос - лучшее, что я могу сделать?

1 ответ1

1

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

  • Временно удалите другие столбцы, yank: mb:%substitute/.*\s// | %yank | undo | 'bput
  • Фильтр буфер в виде :put =map(getline(1, '$'), 'substitute(v:val, ".*\\s", "", "")')

Если вы хотите рассмотреть плагины, плагин csv.vim имеет команду :CSVColumn .

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