Как мне прописать первую букву слова в Vim? - PullRequest
17 голосов
/ 27 июня 2010

В течение долгого времени я знал, что я могу использовать ~ в Vim, чтобы переключать регистр символов. Но есть ли способ сопоставить ключ с заглавной буквы и вернуться к предыдущей позиции?

Например:

I like to drink Coca co[l]

Если мой курсор находится на «l», и я понимаю, что мне нужно сделать заглавную букву «c», то сейчас мне нужно сделать:

<C-c> b ~ ll i

Есть ли способ сопоставить одну клавишу, чтобы сделать первую букву слова под курсором заглавной и сохранить курсор в исходном положении?

Ответы [ 4 ]

15 голосов
/ 27 июня 2010
:nmap <whatever> m`b~``
11 голосов
/ 11 августа 2012

Лично я предпочитаю макрос , а не .Нет необходимости заполнять ваш .vimrc десятками таких одноразовых решений, потому что решение настолько естественно вытекает из «набора инструментов» стандартных команд Vim, что вы можете просто связать его вместе, как вторая натура.

Я набираю длинное слово:

the gallicizatio|

(| - это позиция курсора).Внезапно я понимаю, что я забыл использовать заглавную букву «1010».Итак, бам !, я нажал ESC (который сопоставлен с клавишей caps lock на моей клавиатуре, поэтому для этого требуется лишь мизинец), а затем b~A, и я продолжаю печатать, как будто ничего не произошло.Это ошибочное значение g было написано с заглавной буквы, когда пользователю Emacs потребовалось начать движение правой рукой к клавишам со стрелками, и я уже перешел к остальной части предложения.

В отличие от этого,с макросом, который я не использовал некоторое время, мне, вероятно, потребовалось бы больше времени, чтобы вспомнить, какие ключи я назначил этому макросу.Лучшее решение состоит в том, чтобы очень хорошо выучить важные «основные» команды, которые можно комбинировать на лету по простым правилам с миллионами возможных эффектов.

2 голосов
/ 02 августа 2013

Я часто делаю это и использую командную строку EX, чтобы получить несколько записей, соответствующих условию.В этом случае я использую обратную ссылку, которая выглядит следующим образом:

:%s/\(\w\)\(\w*\)/\U\1\L\2/g

и BOOM, проблема решена для всех слов, которые находятся в определенном контексте.

РЕДАКТИРОВАТЬ: Посмотрите здесь тоже, только что понял, что была эта ссылка, которая имеет аналогичные ответы:

Прописать первую букву каждого слова в выделении, используя vim

2 голосов
/ 27 июня 2010

Вы также можете использовать макрос

q<register> <C-c> b ~ ll i q

и затем @<register> каждый раз, когда вам нужно его использовать

...