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

Как удалить до не-пробела в vim?

Я ищу команду для удаления из курсора в первый символ без пробелов в той же строке. Некоторое время я искал Googled и попробовал несколько возможностей. Нет радости. Кто-нибудь знает, как это сделать?

4b9b3361

Ответ 1

Последовательность d w удалит все символы из курсора до следующего слова. Это означает, что если вы выполняете команду, стоя в середине слова, она удалит оставшуюся часть этого слова и последующие пробелы. Может или не может быть тем, что вы ищете.

Ответ 2

Вы можете попробовать d W. Это будет двигаться "WORD" (см. Справку для WORD и слова), которая выглядит более подходящей для вашего вопроса.

dw не удовлетворит ваши потребности, например:

array[1] = 5

Нажатие dw, расположенное в a, оставит вас с:

[1] = 5

Но использование dw приведет к:

= 5

Ответ 3

Чтобы удалить слово, независимо от того, на какую букву находится курсор, используйте daw (мнемонический "удалить слово" ) также работает с другими командами, например. caw "изменить слово". f и t - отличная команда, которая может использоваться вместе с d. Например. для удаления от курсора до первого включения, включая, например, буква "t", используйте dft. Чтобы оставить "t" неповрежденным, используйте dtt.

Ответ 4

Многие из ответов здесь прямо не затрагивают вопрос. Ответчик хочет знать, как удалить до первого символа не -whitespace. Некоторые из ответов будут технически работать, но давайте посмотрим, как это сделать явно.

The following examples demonstrate how to do this in normal mode with variations that account for the starting position of the cursor. The u̲nderlined c̲haracters indicate the cursor position:


      d w:   foo_     бар   →   foob̲ar

Команда d elete w ord, описанная в других ответах, отлично подходит для удаления до следующего символа без пробелов, когда наш курсор расположен перед мишенью.


      d b:   foo      b̲ar   →   b̲ar

Естественно, мы хотим попробовать инверсию d w для удаления назад перед первым символом без пробела перед курсором. Однако, как показано выше, команда d elete b ack-word удаляет больше, чем мы ожидаем — она также стирает предыдущее слово. Для этого случая мы должны использовать:

      d T <?>:   foo      b̲ar   →   foob̲ar

... где <?> - первый символ без пробелов перед курсором. Команда d elete back-un T il стирает все до, но не включает символ <?>, который в этом случае является символом o в конце "foo".


      d T <?>:   foo_     бар   →   foob̲ar

Как и предыдущая команда, мы можем использовать d elete un T il (с нижним регистром "t" ) для удаления символов вперед до следующего символа <?> (b в строке " для этого примера). Для достижения этого результата достигается тот же результат, что и d w.


      d i w:   Foo   _   бар   →   foob̲ar

Если наш курсор расположен посредине пробела, мы можем использовать команду d elete i nner w ord, чтобы удалить пробелы с обеих сторон.


      d / <?> :   foo_   \n   бар   →   foob̲ar

Если пробелы, которые мы хотим удалить, включают в себя разрывы строк, мы можем использовать приведенную выше команду d elete до совпадающего шаблона <?>, где шаблон в этом случае является только первым символом без пробелов. Как показано, нажмите Enter, чтобы выполнить эту команду.

Когда первый символ без пробелов встречается в начале строки после разрыва, Vim удалит пробел, но оставьте цель на следующей строке. Нам нужно добавить J к приведенной выше команде в J в строках (в верхнем регистре "j" ).

      d / <?> J:   foo_     \n бар   →   foob̲ar

Ответ 5

d w должен работать.