Настройка разделителей слов в vi

vi рассматривает тире - и пробел   как разделители слов для таких команд, как dw и cw.

Есть ли способ также добавить подчеркивание _?

Я довольно часто хочу изменить часть имени переменной, содержащую символы подчеркивания, например, заменить src_branch на dest_branch. Я заканчиваю подсчетом символов и использую s (например, 3sdest), но было бы намного проще использовать cw (например, cwdest).

FWIW вы можете избежать подсчета с ct_dest

Cuadue 07.03.2015 02:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
58
1
12 466
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Вы можете ввести cf_dest_ и сохранить счетную часть.

Редактировать: или, как предлагается: ct_ изменяет текст прямо перед символом подчеркивания. (Я больше использую движение f, так что мне это пришло более естественно)

Или вы можете переопределить 'iskeyword' (подробнее о :help iskeyword).

Ответ принят как подходящий

Если вы используете vim, вы можете изменить это, установив опцию iskeyword (:he iskeyword). Если это не вариант, вы всегда можете использовать ct_ вместо подсчета.

Просто vi, а не vim. Не знал о ct - это, безусловно, поможет, спасибо

Joe Watkins 22.10.2008 16:09

Я просто смотрел на это сам и добавил это в свой .vimrc:

set iskeyword=!-~,^*,^45,^124,^34,192-255,^_

У моего .vimrc были проблемы с ^ | и ^ ", который был частью iskeyword по умолчанию для моей настройки, поэтому я изменил их значения ascii, и он работает нормально. Моя основная модификация заключалась в добавлении" ^ _ "в конец настройки по умолчанию, чтобы vim не видел подчеркивание как часть слова.

К вашему сведению, удаление подчеркивания из iskeyword может испортить подсветку синтаксиса. Если кто-нибудь знает, как заставить vim видеть подчеркивание как несловесный символ для целей навигации, но не для выделения синтаксиса, дайте мне знать.

kbosak 09.04.2009 16:43

Вы можете использовать плагин, чтобы получить этот эффект, например, camelcasemotion.

Edan Maor 09.05.2012 12:35

Is there a way to add underscore _ as well?

:set iskeyword-=_ 

Я использовал vi, а не vim, поэтому не вариант

Joe Watkins 31.10.2012 11:49

Есть ли причина использовать vi вместо vim?

g33kz0r 01.11.2012 20:15

Думаю, вы никогда не работали в замкнутой, сильно изменяемой контролируемой среде, управляемой параноидальными PHB! :) т.е. установка vim означала бы мир боли ...

Joe Watkins 29.11.2012 19:57

Я уволился с этой работы, а вы не смогли мне заплатить достаточно, чтобы вернуться.

g33kz0r 29.11.2012 23:19

Эта команда работает путем редактирования 'iskeyword' вариант. Его значение по умолчанию в UNIX - "@,48-57,_,192-255", а set-= заменяет его на "@,48-57,192-255".

Rory O'Kane 05.08.2013 21:06

@ РориО'Кейн. Я повторю еще раз, это vi, а не vim. Нет возможности использовать iskeyword.

Joe Watkins 29.08.2013 19:01

@JoeWatkins Я опубликовал эту информацию о 'iskeyword' не для вас, а для всех пользователей Vim, которые являются во главе с Google.

Rory O'Kane 29.08.2013 19:19

@ RoryO'Kane И мы благодарим вас за это. Однако при этом каждый _ считается отдельным словом. Есть ли способ заставить его пропустить его, поскольку он делает пробелы при движении w?

OJFord 08.04.2016 16:20

@OllieFord Из документации для w и word не похоже, что есть какой-либо встроенный способ. Если вы хотите, чтобы w и подобные движения работали по-другому, вам придется заново привязать их к функциям, предоставляемым плагином или вами. Если вы пишете свое собственное движение, плагин vim-textobj-user также может помочь вам создать эквивалентные текстовые объекты (iw, aw).

Rory O'Kane 17.04.2016 11:48

Еще один хороший вариант в таких случаях - использовать плагин верблюдодвижение.

Он добавляет новые движения ,b, ,e и ,w, которые работают аналогично b, e и w, за исключением того, что они распознают слова CamelCase и snake_case. С его помощью вы можете использовать

c,edest

и это заменит "src_branch" на "dest_branch", если ваш курсор был на первом символе "src_branch".

Чтобы перейти к следующему символу подчеркивания, введите "df_" Чтобы перейти к следующему символу подчеркивания, введите "cf_" ПРИМЕЧАНИЕ: не включайте двойные кавычки.

Другие вопросы по теме