Я использую пример кода JavaScript:
1 var a = 1;
2 var b = |{};
Курсор находится в позиции |
(на символе "{", когда форма курсора является блоком), я обнаружил, что мне нужно a
назначить объект, поэтому я хочу изменить его, как показано ниже:
1 var a = {};
Поэтому я хочу знать, когда курсор находится на «{», как быстро удалить все содержимое перед «{», пока не появится пробел после знака «=» в строке 1?
В других обычных редакторах я просто нажму клавишу Backspace, чтобы удалить код. Но я не знаю, как этого добиться в VIM.
insert-mode
normal-mode
Аарон Шен
источник
источник
i
и использовать клавишу возврата. Никто не застрелит тебя за это. Я думаю.eol
то забой будет удалить разрывы строк. Вы также должныstart
быть включены в настройку. (См.:help backspace
) Не используйте этот метод, хотя! Есть несколько намного более быстрых методов, детализированных в ответах ниже.Ответы:
Не уверен, что я полностью понимаю вопрос, но если вы хотите удалить, пока у вас есть только
var a = {};
, вы могли бы, с позиции курсора, использоватьd?1Enterdпринимает движение, и вы можете дать ему шаблон поиска /для прямого поиска или ?для обратного поиска.
Вот маленький GIF, демонстрирующий это:
источник
Enter
после вводаd?1
.Если вы используете vim (а не classic vi), то в вашем примере вы можете это сделать
vkd
(илиvkx
).v
переведет его в «визуальный» (выборочный) режимk
поднимется на одну строку, чтобы навести курсор на «1», выбрав часть, которую вы хотите удалитьd
илиx
удалит выделениеисточник
Удалить вверх
Для этого конкретного примера,
dgk
это один из самых быстрых способов сделать это.За
d
командой, как объяснил Акшай , может следовать движение, удаляющее все символы между тем, где начинается курсор, и тем местом, куда его приводит движение.В вашем коде вы хотите удалить все, что находится между позицией курсора и тем же столбцом на одну строку дальше вверх, поэтому перемещение курсора вверх вместе с
gk
движением (которое при использовании с оператором не является линейным) достигнет вашей цели.РЕДАКТИРОВАТЬ: BobH указывает в комментариях, что этот метод работает, только когда
'wrap'
установлен. Таким образом, если у вас не всегда установлена обтекание, вам, вероятно, лучше использоватьdvk
илиvkd
, как подсказывают другие ответы на этой странице.Удалить слова назад
Вы также можете использовать:
d5b
илиd4B
, который удалит 5 слов или 4 слова назад, соответственно. (1;
это одно СЛОВО, но два обычных слова).источник
vim -u NONE -U NONE
и он удаляет обе строки.gk
как символически очевидно требует:set wrap
(несколько загадочно). Я не мог понять, почему это, по-видимому, работает для всех остальных, но не для меня, когда помощь,gk
похоже, подразумевает, что она должна работать. Единственная подсказка заключалась в том, что основное значениеgk
имело отношение к обернутым линиям. Однажды я попытался установить обертывание (вроде по прихоти), вуаля, это сработало.Я пока не могу комментировать, поэтому мне нужно сделать новый ответ. Ключи, d kданные Rich, не работают для меня даже при использовании опции nocompatible. Причиной может быть то, что kvim считает движение аналогичным образом, и в этом случае обе строки удаляются. От
:help d
:Это также показывает лекарство: используйте, dvkчтобы заставить движение быть характерным. Это делает трюк для меня.
Я не знал o_v раньше, так что вот
:help o_v
:источник