Як видалити другий стовпець у Vim?


12

У мене є файл з обмеженими вкладками, як:

name1   verb1   name2   verb2   etc...

Я хочу видалити другий стовпець. Я спробував редагувати одну з цих відповідей , але не був знайомий sedі awkне зміг.

Хтось може мені допомогти?


@KasiyA Оригінал OP використовувався \ t для позначення вкладок.
steeldriver

@steeldriver Добре, що ти маєш рацію. Я думав, що це частина лінії. вилучено. Але я змінив, щоб виправити одне відповідно до першого повідомлення. Дякую
αғsnιη

1
режим візуального блоку vim не вирішує проблему? (ctrl-v у звичайному режимі виберіть стовпчик xдля видалення)?
Рмано

@Rmano це допомагає спасибі, але ви можете мені сказати, як перейти до кінця файлу у візуальному режимі? (Я спробував ctrl G, але він не працює).
teaLeef

Відповіді:


10

У vim, ви повинні мати можливість використовувати команду

:%s/\t[^\t]*//

(заміна з TABнаступним нулем або більше випадків будь-якого символу, крім TABнічого). Якщо у вашому файлі є лише два стовпці, ви можете використовувати трохи простіший :%s/\t.*або :%s/\t.*$замінити перший TABта будь-який наступний символ до кінця рядка.


22

Прийнята відповідь набагато більш елегантна, ніж ця (я її схвалив!), Але якщо ви її не пам'ятаєте, ви можете використовувати vim режим візуального блокування безпосередньо. Відкрийте vim та перейдіть (звичайний режим) до першого кута стовпця, наприклад:

введіть тут опис зображення

Введіть CTRL-Vкурсор і ви можете перемістити курсор, щоб вибрати стовпчик, це посередині:

введіть тут опис зображення

Щоб перейти в кінці, натисніть G:

введіть тут опис зображення

блок здається зламаним, оскільки ми знаходимося в останньому рядку, який порожній; просто перейдіть на один рядок (зі стрілкою вгору або k), щоб побачити його знову ...:

введіть тут опис зображення

Тепер ви просто натисніть, xщоб видалити блок:

введіть тут опис зображення


6

Я б cutдля цього скористався

cut -f1,3- file.txt > newfile.txt
mv newfile.txt file.txt

Ви також можете використовувати це як фільтр і в vim (це замінить усі рядки у файлі; ви також можете використовувати (наприклад) 2,9замість %обробки рядків 2-9 або обрати потрібні рядки V):

:%!cut -f1,3-

-f1,3-означає "поле друку одне, а потім поле три та всі поля до кінця рядка". За замовчуванням cutвикористовує вкладку як свій роздільник; якщо вам потрібно щось інше, скористайтеся -dопцією (див. man cut).


4

Ви можете спробувати:

:%norm WdW

або вручну, використовуючи візуальний режим:

  1. Перейти до другого стовпця (наприклад, натиснувши:) W.
  2. Почніть візуальний блок від Ctrl+v.
  3. Виберіть другу колонку (наприклад, натиснувши: W, G).
  4. Видаліть його, натиснувши d.

Щоб зробити це на місці з командного рядка, спробуйте:

$ ex +':exe ":%norm f\<Tab>dE"' -scx file

Пов'язане: Як написати буквальне для клавіші Tab, щоб використовувати для руху?

Дивіться також:


Так, +1, але будьте уважні, що якщо у вас є пусті рядки в кінці кроку 3), можна піти не так ...
Rmano
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.