Яка різниця між w і W у режимі втечі vim?


19

Я переглядаю команди vim help quickref для переміщення курсору. Наступні рядки плутають мене, бо я вважаю, що вони працюють однаково. Невже хтось міг би розробити мені різницю на прикладі.

N  w            N words forward
N  W            N blank-separated WORDS forward

Це ж питання стосується і e та E.

Відповіді:


34

Відповідно до цього шпаргалки , здавалося б, зводиться до пунктуації.

w   jump by start of words (punctuation considered words)
W   jump by words (spaces separate words)
e   jump to end of words (punctuation considered words)
E   jump to end of words (no punctuation)

Приклад

використання демо w

          сс ш

використання демо W

          ss W

У першій демонстрації зауважте, як, коли wпостійно натискає курсор, що курсор приземляється на пунктуацію, а у другому демонстраційному знаку пунктуація пропускається. Це різниця між малими командами та їх еквівалентами у верхньому регістрі.


@slm: велике спасибі за таку чудову демонстрацію. з такою демонстрацією не потрібно читати і ANS
rahul.deshmukhpatil

5

Насправді це досить просто, wпросто переходить до наступного слова, але будь-який тип пунктуації чи пробіл розбиває слова. Wце як команда наступного слова промислового рівня, слова розмежовані лише пробілом, будь то вкладка, пробіл чи новий рядок. wзупиняється на розділювальній розділовій знаку також, якщо ви хочете мати справу з цим.

Я вважаю різницю найбільш корисною для імен хостів:

birdman.cartoons.fictional.com # Fictional host

З w, ви зупиняєтесь на кожній частині імені хоста та крапках. Wпросто пропускає все ім'я хоста і переходить до #. Вони обидва також застосовуються до dта cдля видалення та зміни слів.

Якщо ви розміщуєте на початку вищевказаного рядка, якщо ви хотіли замінити birdman.cartoonsчимось іншим, ви б 3cwзамінили як перші дві частини, так і крапку посередині. Ви не змогли зробити це Wбез повторного введення цілого імені хоста.


2

Це різниця, яку найкраще зрозуміти, розглядаючи, як пунктуація може впливати на концепцію Віма про те, що розмежовує слово.

У разі прикладу цього тексту:

This line is space separated with no commas
however, this line is—note—comma, separated,see

wбуде щасливо переходити до першої літери кожного слова в першому рядку, оскільки є лише місце для переговорів. Він зазнає невдачі погано на лінії 2 з пунктуацією, опускаючись на перших букв кожного слова і коми і окремими штрихами. Щоб перейти від слова до слова по другому рядку, вам потрібно буде використовувати Shiftw1 .

1. Вже тоді Вім бачить «є – примітка – кома» як одне слово.


1

Різницю можна знайти на внутрішніх сторінках довідки vim. Давайте спочатку отримаємо опис w і W з :helpw або :help W:

  • w [рахувати] слова вперед. | ексклюзивні | рух.
  • W [count] СЛОВА вперед. | ексклюзивні | рух.

Тепер ми хочемо знати, що таке визначення слова та СЛОВА. Знову перегляньте посібник за допомогою, :help wordі :help WORDми знайдемо їх.

  • Слово складається з a sequence of letters, digits and underscoresабо a sequence of other non-blank characters, separated with white space(пробіли, вкладки,). Це можна змінити за допомогою параметра 'iskeyword'. Порожній рядок також вважається словом.
  • СЛОВ складається з a sequence of non-blank characters, separated with white space. Порожній рядок також вважається СЛОВОМ.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.