Как я могу использовать первую букву слова в Vim?

17

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

Например:

I like to drink Coca co[l]

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

<C-c> b ~ ll i

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

    
задан Patrick 27.06.2010 в 07:43
источник
  • Посмотрите здесь. –  Bozhidar Batsov 27.06.2010 в 07:54
  • Это тоже хорошее руководство. Спасибо, что поделился. –  Patrick 27.06.2010 в 08:19
  • ЭТО, как следует использовать vim! –  kenny 11.08.2012 в 00:01

4 ответа

15
:nmap <whatever> m'b~''
    
ответ дан Ignacio Vazquez-Abrams 27.06.2010 в 07:52
источник
  • Ничего себе, спасибо за быстрый ответ. Это именно то, что я ищу! –  Patrick 27.06.2010 в 07:55
  • лучше сделать его m'lb ~ '', чтобы вы могли иметь такой же эффект, даже если вы уже на первом символе слова. Само использование этого –  Hennadii Madan 08.06.2016 в 13:39
  • спасибо, но он не работает в визуальном режиме (с vmap). –  randomware 26.02.2017 в 20:53
10

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

Я печатаю длинное слово:

the gallicizatio|

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

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

    
ответ дан Maxy-B 10.08.2012 в 23:23
источник
  • Спасибо за ответ! Хотя, для меня, помня о встроенной командной последовательности, нет разницы, а затем вспоминать созданное мной отображение или макрос. Хотя на новой машине, без предпочтительного отображения, нужно вернуться к тому, что он помнит о встроенных командах :) –  Patrick 11.08.2012 в 19:59
  • @Patrick: дело в том, что вам не нужно запоминать встроенную последовательность команд (b ~ A в этом случае). Вы помните относительно небольшое количество отдельных встроенных команд и правила их объединения неограниченно. Точно так же вы можете строить бесконечные, новые предложения английского языка, запоминая конечное число морфем и правила их объединения. –  Maxy-B 08.11.2012 в 21:19
  • пользователь Emacs выполнил бы M-b M-c, чтобы получить тот же результат и не переходить к клавишам со стрелками –  Carlo Rodríguez 19.10.2014 в 20:36
2

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

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

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

    
ответ дан Amir Rachum 27.06.2010 в 07:54
источник
  • Проблема с этим подходом заключается в том, что длина «ll» является неопределенной для каждого слова. –  Patrick 27.06.2010 в 08:18
2

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

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

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

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

Заглавие первой буквы каждого слова в выборе с помощью vim

    
ответ дан ovatsug25 02.08.2013 в 15:55
источник