Как удалить кавычки, окружающие первые два столбца в Vim?

В старые времена, когда я использовал классический ASP, я использовал структуру «ГДЕ 1 = 2» для получения определений столбцов таблицы, а не ее содержимого. В настоящее время существуют более эффективные способы получения определений столбцов с использованием структуры сопоставления объектных отношений.

Я предполагаю, что книга, которую вы читаете, немного устарела, или контекст этого запроса неуместен.

15
задан kenorb 18 October 2015 в 12:40
поделиться

6 ответов

Control-V используется для выбора блока. Это позволит вам выбирать элементы в том же столбце символов.

Похоже, вы хотите удалить кавычки вокруг чисел. Для этого

:%s/"\([0-9]*\)"/\1/g

Вот список шаблонов, которые вы можете делать с vim .


Есть еще одна (своего рода уродливая) форма, которая ограничивает до 4 замен в строке.

:%s/^\( *\)"\([ 0-9]*\)"\([ 0-9]*\)"\([ 0-9]*\)"/\1\2\3\4/g

] И, если у вас есть sed под рукой, вы также можете попробовать их из оболочки.

head -4 filename.txt | sed 's/pattern/replacement/g'

, который попробует вашу команду в первых 4 строках файла.

18
ответ дан 1 December 2019 в 00:04
поделиться

См. редактирование столбца в vim . Он описывает вставку столбца, но в основном он должен работать таким же образом для удаления.

3
ответ дан 1 December 2019 в 00:04
поделиться

Вы также можете создать макрос (q), который удаляет кавычки, а затем переходит к следующей строке. Затем вы можете запускать его несколько раз, указав vi, сколько раз его выполнять. Итак, если вы сохраните макрос, чтобы сказать букву m, вы можете запустить 100 @ mи он удалит кавычки для 100 строк. Для получения дополнительной информации о макросах:

http://vim.wikia.com/wiki/Macros

1
ответ дан 1 December 2019 в 00:04
поделиться

используйте команды визуального блока:

  • запуск режима с помощью Ctrl-v
  • укажите движение, например или используйте клавиши вверх / вниз
  • для выбранного блока укажите действие, например, 'd' для удаления

Подробнее см. : h visual-mode

28
ответ дан 1 December 2019 в 00:04
поделиться

Остальные решения хороши. Вы также можете попробовать ...

: 1, $ s / ^ "\ (\ w \ + \)" / \ 1 / gc

Для получения дополнительной справки по регулярным выражениям Vim также см. http: // vim .wikia.com / wiki / Search_patterns .

1
ответ дан 1 December 2019 в 00:04
поделиться

Хотя этот случай было довольно просто исправить с помощью регулярного выражения, если вы хотите сделать что-то более сложное, я также рекомендую записать макрос, например Bryan Ward. Также макросы мне проще, чем запоминать, какие символы нужно экранировать в регулярных выражениях vim. А макросы хороши тем, что вы можете видеть, что ваши изменения происходят немедленно, и работать над преобразованием строки меньшими битами за раз.

Так что в вашем случае вы бы нажали qw, чтобы начать запись макроса в регистр w (вы можете конечно используйте любую букву, которую хотите). Обычно я начинаю свои макросы с символа ^, чтобы перейти к началу строки, чтобы макрос не зависел от положения курсора. Затем вы можете сделать f «перейти к первому», x, чтобы удалить его, f «перейти к следующему» и x, чтобы удалить это тоже. Затем q, чтобы закончить запись.

3
ответ дан 1 December 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: