Рассмотрим следующую строку Python:

print("\nHello, world!")

Чтобы изменить слово Hello на Hola можно просто ciw . Однако эта наивная команда также заменяет n из \n . Как можно настроить VIM так, чтобы он игнорировал ведущий символ слова, если непосредственно перед словом найден символ \?

Обратите внимание, что подсветка VIM распознает ведущий n как принадлежащий \n , поэтому, возможно, решение может быть основано на этом.

1 ответ1

2

Движения слова в Vim универсальны (или, как вы говорите, "наивны") и управляются только настройкой 'iskeyword' . Обычно это хорошо, потому что они применимы ко всем видам текста и большинству языков программирования.

То, что вы хотите, это специализированный текстовый объект; Вы могли бы реализовать это, переназначая текстовый объект iw по умолчанию (и, возможно, также связанные движения, такие как w , e и т. д. для согласованности). Я не видел такой реализации, но это определенно выполнимо в Vimscript. Может помочь плагин textobj-user .

Кроме того, вы можете сначала применить текстовый объект в визуальном режиме, а затем исправить выбор для первого символа n : viwolc . o переходит в другую сторону выбора, l уменьшается его один раз, и , наконец , висящий c выбор.

... или просто повторно введите удаленный n ; в конце концов, это всего лишь один персонаж, и это быстро сделать. Это то, что я, вероятно, сделал бы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .