Удалите пару скобок, скобок или скобок в Vim - PullRequest
49 голосов
/ 18 января 2010

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

anArray << [anElement]

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

anArray << anElement

Ответы [ 5 ]

54 голосов
/ 18 января 2010

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

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

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

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

Добавить:

Plugin 'tpope/vim-surround' 

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

49 голосов
/ 18 января 2010

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

EDIT:

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

41 голосов
/ 18 января 2013

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

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

    di[
    
  2. Выбор (пустых) квадратных скобок.

    va[
    
  3. Вставьте вырезанный текст поверх них.

    p
    

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

di[va[p
5 голосов
/ 17 января 2013

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

di[vhp 

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

3 голосов
/ 26 февраля 2010

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

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

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

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

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