Vim: слово vs WORD


84

Я изучаю Vim и не могу понять разницу между wordи WORD.

Я получил следующее из руководства Vim.

Слово состоит из последовательности букв, цифр и подчеркиваний или последовательности других непустых символов, разделенных пробелом (пробелы, табуляции,). Это можно изменить с помощью опции iskeyword. Пустая строка также считается словом.

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

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

Вопрос: В
чем разница между ними?
И почему / когда кто-то будет использоватьWORD over word?

Я уже сделал Google и SO поиска, но их поиск двигатель интерпретировать WORDкак только что wordтак как я искал Vim word vs wordи, конечно , не найти ничего полезного.


2
Это объясняется и даже проиллюстрировано на :h 03.1. Пожалуйста, проверьте руководство пользователя.
glts 08

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

1
@ Al.G. Рад узнать. Благодаря!
octref

2
В английском "или" есть двусмысленность. Они имеют в виду следующее: слово состоит из последовательности (букв ИЛИ цифр ИЛИ подчеркивания), XOR (последовательности других непустых символов), разделенных пробелами (пробелы, табуляции,).
user1433150 06

@ 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
Обратите внимание, что вы можете использовать iskeyword: set для изменения того, что делает 'W'. См .: help '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

Другой способ сказать это. Если ur кодирует, и вы хотите переместиться через строку, останавливающуюся на разделителях и других строках, которые "(). [],:", Используйте 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) пять «слов»: (мы), ('), (re), (in) и (stackoverflow)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.