Vim: слово проти WORD


84

Я вивчаю Віма і не можу обернути голови навколо різниці між wordі WORD.

Я отримав наступне з посібника Vim.

Слово складається з послідовності літер, цифр і підкреслення або послідовності інших непустих символів, розділених пробілами (пробіли, вкладки,). Це можна змінити за допомогою опції 'iskeyword'. Порожній рядок також вважається словом.

СЛОВО складається з послідовності непустих символів, розділених пробілами. Порожній рядок також вважається СЛОВОМ.

Я відчуваю wordі WORDє одним і тим же. Вони обидва є послідовністю непустих символів, розділених пробілами. Порожній рядок можна розглядати як як, так wordі WORD.

Питання:
Яка різниця між ними?
І чому / коли б хто - то використовувати WORDбільш word?

Я вже робив пошук у Google та SO, але їх пошукова система трактує WORDяк просто wordтак, ніби я шукаю Vim word vs wordі, звичайно, не знайду нічого корисного.


2
Це пояснено та навіть проілюстровано на :h 03.1. Будь ласка, перевірте посібник користувача.
glts

10
Ваше запитання змінило ситуацію під час пошуку vim WORD and word- це перший результат пошуку зараз :)
Al.G.

1
@ Al.G. Радий знати. Дякую!
жовтень

2
В англійській мові "або" є неоднозначність. Що вони мають на увазі сказати: Слово складається з послідовності (букв АБО цифр АБО підкреслення), XOR (послідовність інших непорожніх символів), розділених пробілами (пробіли, вкладки,).
user1433150

@ user1433150, що було корисно, дякую. Але навіть з цим уточненням все одно є щось заплутане. Вони говорять: "або послідовність інших непустих символів, розділених пробілами (пробіли, вкладки,)", але якщо це правда, то це просто означає будь-яке слово. Тому мені здається, що вони кажуть "це менший набір XOR все". Це правильно?
Чарлі Паркер,

Відповіді:


115
  • СЛОВО завжди розмежовується пробілами .
  • Слово розмежоване символами, що не мають ключових слів , які можна налаштувати. Пробіли не є ключовими словами, і, як правило, інші символи (наприклад ()[],-) ні. Тому слово, як правило, менше слова; слово-навігація є більш дрібним.

Приклад

This "stuff" is not-so difficult!
wwww  wwwww  ww www ww wwwwwwwww    " (key)words, delimiters are non-keywords: "-! and whitespace
WWWW WWWWWWW WW WWWWWW WWWWWWWWWW   " WORDS, delimiters are whitespace only

1
Зверніть увагу, що ви можете використовувати: set iskeyword, щоб змінити те, що робить "W". Для отримання додаткової інформації дивіться: довідка 'iskeyword'.
Джессі Росс,

Приклад вище невірний. Подвійні лапки - це теж слова (або частина одного слова, залежно від опції 'iskeyword'). Таким чином, його слід також позначити як "w". Як і тире.
Flashrunner

@Flashrunner Це залежить від 'iskeyword' варіанту, як згадував Джаред Росс. За замовчуванням це працює так, як я писав.
Інго Каркат

:set iskeyword=a-z,A-Z,\",- |This |"stuff" |is |not-so |difficult|! :set iskeyword=a-z,A-Z |This |"|stuff|" |is |not|-|so |difficult|! |- тут зупиняється «w». Як бачите, це завжди слово.
Flashrunner

Коментар Джареда Росса теж помилковий. iskeyword змінює те, що робить "w", а не "W".
Flashrunner

20

Якщо я це роблю viw("вибрати внутрішній word"), поки курсор увімкнено appв наступному рядку, він вибирає app:

app/views/layouts/admin.blade.php

Якщо я роблю viW( WORD), поки мій курсор знаходиться в тому самому місці, він вибирає всю послідовність символів. A WORDвключає символи words, подібні до англійських слів, таких як зірочки, скісні риски, дужки, дужки тощо.


Останній параграф пояснення вище незрозумілий. Тут відсутні деякі ключові слова, які б зрозуміли різницю.
Прайм

15

Відповідно до документації Vim (: h 03.1)

  • Слово закінчується символом, що не є словом, наприклад, ".", "-" або ")".

  • СЛОВО закінчується строго пробілом. Це може не бути словом у звичайному розумінні, отже, велика буква.

напр.

           ge      b          w                             e
           <-     <-         --->                          --->
    This is-a line, with special/separated/words (and some more). ~
       <----- <-----         -------------------->         ----->
         gE      B                   W                       E

Якщо курсор дорівнює m (більше)

  • слово означало б "більше" (тобто розмежоване знаком ")" несловний символ)

  • тоді як СЛОВО означало б "більше)". (тобто розмежовано лише пробілами)

так само, якщо курсор знаходиться на p (спеціального)

  • слово означало б "особливий"
  • тоді як СЛОВО означало б "спеціальне / відокремлене / слова"

14

Доповнюючи попередні відповіді ... я візуалізую це так; СЛОВО більше слова, воно охоплює більше ... введіть тут опис зображення


0

Ще один спосіб сказати це. Якщо ур кодування, і ви хочете рухатись через рядок, що зупиняється на роздільники та рядки, що "(). [],:" Використовуйте w.

якщо ви хочете їх обійти і просто перейти до слів, скажімо, як у романі чи новелі, використовуйте W.

Для кодування малий w, мабуть, використовується найчастіше. Залежить від того, де ви знаходитесь у коді.


0

Це граматична проблема при розумінні визначення поняття "слово".

Спочатку я застрягаю в китайській версії цього визначення (може бути пропущений переклад).


Визначення точно є правильним, але читати його слід так:

A word consists of:
   [(a sequence of letters,digits and underscores),
or (a sequence of other non-blank characters)], 
separated with white space (spaces, tabs, <EOL>).

Пробіли потрібні лише при розмежуванні двох однакових типів "слова"


Інші приклади в дужках:

(приклад ^ & $% ^ Приклад) три "слова": (приклад), (^ & $% ^) та (Приклад)

(^ & ^ & ^ ^ && ^ & ^ ) два "слова": (^ & ^ & ^ ^) та (&& ^ & ^ )

(ми в stackoverflow) п’ять "слів": (we), ('), (re), (in) і (stackoverflow)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.