Подтвердить что ты не робот

Удалите пару круглых скобок, скобок или брекетов в Vim

В Vim, если у меня есть код, например (в Ruby):

anArray << [anElement]

и мой курсор находится на первом [, я могу перейти к ] с помощью клавиши %, и я могу удалить все содержимое между парой [] с d%, но что, если я просто удалите [ и ], оставив все оставшееся содержимое между ними. Другими словами, какой самый быстрый способ добраться:

anArray << anElement
4b9b3361

Ответ 1

Использование плагина Surround.vim для Vim:

http://www.vim.org/scripts/script.php?script_id=1697

... вы можете устранить окружающие разделители с помощью ds<delimeter>.

Установка через плагин Vundler:

Добавить

Plugin 'tpope/vim-surround' 

в ваш .vimrc файл и запустите : PluginInstall

Ответ 2

ma%x`ax (пометьте позицию в регистре a, перейдите к совпадающему парку, удалите char, перейдите к отметке a, удалите char).

EDIT:

%x``x делает то же самое (спасибо alok для подсказки)

Ответ 3

Можно использовать текстовые объекты, встроенные в Vim (см. :help text-objects). Требуемое редактирование может быть указано как последовательность следующих три действия.

  • Вырезать текст внутри квадратных скобок.

    di[
    
  • Выберите (пустые) квадратные скобки.

    va[
    
  • Вставьте текст над ними.

    p
    

В целом это дает

di[va[p

Ответ 4

Если у вас есть проблемы с метками, указывающими на первый char строки или с помощью%...

di[vhp 

работает также... Он удаляет соответствующие скобки [], когда курсор находится где-то внутри. '[' можно заменить на '{' или '('.

Ответ 5

Другие ответы отлично работают, если вы хотите удалить разделители по одной строке за раз.

Если, с другой стороны, вы хотите удалить функцию, а ее разделители из всего файла:

:%s/function(\(.*\))/\1/g

который заменяет function(arguments) на arguments всюду в файле.

Ответ 6

Легко запомнить команда

ds[

который обозначает удаление окружающих. Вы можете использовать его с ', ", [, (, {.