Найпростіший спосіб видалити "складене" слово?


20

Вибачте, якщо "композитний" не є технічним терміном. Я маю на увазі наступне:

Hi, I-am-a-composite-word and we are not

Я хотів би видалити лише складене слово. У командному режимі, якщо я переміщу курсор на I, то повторення dwкілька разів або краще ввести dwодин раз з наступним кількома .натисканнями зробить трюк. Однак з різних причин я вважаю, що роблю це досить часто протягом дня, тому мені було цікаво, чи є простіший спосіб.

PS Я б не вважав команду d9wбільш простим способом. Підрахунок довгої послідовності слів і тире - це не моя ідея "простішого".

Відповіді:


33

Те, що ви називаєте складеним словом, насправді є СЛОВОМ (протиставленням слову). Читання :h wordта :h WORDмає бути корисним:

                            *word*
A word consists of a sequence of letters, digits and underscores, or a
sequence of other non-blank characters, separated with white space (spaces,
tabs, <EOL>).  This can be changed with the 'iskeyword' option.  An empty line
is also considered to be a word.
                            *WORD*
A WORD consists of a sequence of non-blank characters, separated with white
space.  An empty line is also considered to be a WORD.

Те, що ви шукаєте тут, це dWколи ви знаходитесь Iабо diWколи ви знаходитесь десь у слові.

Можливо, в майбутньому вам також потрібно буде прочитати :h 'iskeyword'.


1
дякую за відповідь: працює. За приводу визначення: A WORD consists of a sequence of non-blank characters, separated with white space. Separated with white spaceозначає, що СЛОВ розділений іншими словами або СЛОВА з пробілом, правда?
DeltaIV

2
@DeltaIV Так in-this-sentence there are four"WORDsна 4 слова in-this-sentence, there, areі four"WORDs. Легко бачити , коли ви використовуєте wі Wчи bі Bрух, наприклад. Зауважте, що пробіл може бути "звичайним" простором або символом вкладки.
statox

1
Ця відповідь була б більш одразу корисною, якби вона почалася з "Що ви шукаєте тут - dW ..", а не змушувати читача проходити до середнього абзацу, щоб знайти рішення.
Марк Меуер

9

Іншим більш загальним рішенням є видалення до символу пробілу за допомогою dt (з пробілом після t), що означає "видалити до [символу]. Це часто корисно і для таких речей, як dt:і подібні.


що робить dt: ?
DeltaIV

1
Коли я опублікував ту саму відповідь, я дізнався, що ви можете використовувати <code>dt </code>для включення пробілу в кінці.
BurnsBA

2
@DeltaIV Насправді те, що вам справді потрібно, - це читати :h motion.txtта користуватися vimtutor, що дуже допоможе вам отримати основи Vim
statox

@statox Я колись був досвідченим у VIM ... 10 років тому :-) vimtutorзвучить дуже цікаво. Я не впевнений, що він встановлений на віддаленому сервері (схоже, не встановлена ​​навіть manутиліта). Однак я перевірю: якщо він автоматично встановлюється разом із vimпакетом, то великі шанси, що я зможу ним користуватися.
DeltaIV

1
@BurnsBA Дякую, це дуже корисно для цього сайту. Btw. ви можете редагувати публікації від інших і навіть отримати репутацію +2, якщо ваша редакція робить це через певний процес експертної оцінки. Але таким чином я також дізнався щось нове :-).
Алло

4

Якщо ви хочете продовжувати користуватися dwтощо, а також хочете дозволити йому працювати, двічі клацнувши слово, ви можете додати

set iskeyword+=-

до вашого .vimrc, що додає -як слово слова.

Приклад:

Двічі клацніть будь-який символ у ab-cdвізуальному виділенні ab-cd.


Я добре з переходом на dW, але ваше рішення також досить круте, оскільки воно також впливає на візуальний режим. Я маю на увазі, змінивши iskeywordподвійне клацання та натискання, dя повинен мати можливість видалити ab-cd. Правильно?
DeltaIV

А може, я повинен перейти у візуальний режим за допомогою v, а не подвійним клацанням. Правильно?
DeltaIV

1
@DeltaIV, змінивши iskeyword, ви можете використовувати будь-який метод із об’єктами слова (включаючи iw чи aw, значно простіший, ніж використання миші чи візуального режиму)
D. Ben Knoble

4

Не забувайте команди f(find) та t(to). Я, мабуть, просто dt або df (відзначте пробіл наприкінці).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.