Удалите пару круглых скобок, скобок или брекетов в Vim
В Vim, если у меня есть код, например (в Ruby):
anArray << [anElement]
и мой курсор находится на первом [
, я могу перейти к ]
с помощью клавиши %
, и я могу удалить все содержимое между парой []
с d%
, но что, если я просто удалите [
и ]
, оставив все оставшееся содержимое между ними. Другими словами, какой самый быстрый способ добраться:
anArray << anElement
Ответы
Ответ 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
Ответ 4
Если у вас есть проблемы с метками, указывающими на первый char строки или с помощью%...
di[vhp
работает также... Он удаляет соответствующие скобки [], когда курсор находится где-то внутри. '[' можно заменить на '{' или '('.
Ответ 5
Другие ответы отлично работают, если вы хотите удалить разделители по одной строке за раз.
Если, с другой стороны, вы хотите удалить функцию, а ее разделители из всего файла:
:%s/function(\(.*\))/\1/g
который заменяет function(arguments)
на arguments
всюду в файле.
Ответ 6
Легко запомнить команда
ds[
который обозначает удаление окружающих. Вы можете использовать его с '
, "
, [
, (
, {
.