Смысл в "[[", "]]", "[]", "]["

9

Мне было трудно понять эти движения текстовых объектов:

                            *]]*
]]          [count] sections forward or to the next '{' in the
            first column.  When used after an operator, then also
            stops below a '}' in the first column.  |exclusive|
            Note that |exclusive-linewise| often applies.

                            *][*
][          [count] sections forward or to the next '}' in the
            first column.  |exclusive|
            Note that |exclusive-linewise| often applies.

                            *[[*
[[          [count] sections backward or to the previous '{' in
            the first column.  |exclusive|
            Note that |exclusive-linewise| often applies.

                            *[]*
[]          [count] sections backward or to the previous '}' in
            the first column.  |exclusive|
            Note that |exclusive-linewise| often applies.

Я могу понять, что «]» означает «вперед», как и «]}« перейти к следующему непревзойденному «}», а вторая часть «}» описывает цель, которая имеет смысл.

Но что означают вторые скобки в "]]", "] [", "[[", "[]"? Если второе «]» в «]]» означает «{в первом столбце», то как насчет второго «]» в «[]», что означает «}», а не «{». Я просто не могу понять смысл этих 4 движений текстовых объектов.

Лейра Хуа
источник
4
Значение слова «раздел» объясняется в 3 пунктах ниже вашей цитаты.
Ромен
2
@romainl Это гласит: «второй символ [определяет] тип найденной фигурной скобки», что подразумевает, что он ]всегда должен соответствовать a }. Это, как указывает ОП, не так. Они просят разъяснений по этому вопросу, а не определения раздела.
Богатый
см. также vi.stackexchange.com/questions/17774/… и раздел «Теория движений » Стива Лоша
Хотчке

Ответы:

5

Это помогает проверить это на файле. Вы можете думать об этом как «вперед» и «назад», «X» для начала »и« до конца »

Попробуйте использовать четыре движения для этого блока текста:

function one
{#1

}#2

function two
{#3

}#4

function three
{#5

}#6

Я не знаю, как сделать эти часто полезные движения GIF, но в основном, например, ]] ]] ]]будет двигаться с позиций # 1-> 3-> 5, и [[наоборот; аналогично перемещаться между # 2 <-> 4 <-> 6 с помощью ][и []движений.

Вот картинка: введите описание изображения здесь

Филипп
источник
4

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

Ведущий [или ]укажите направление, в котором вы собираетесь идти в файле, соответственно вверх или вниз. Затем второе [или ]означает перейти к открытой скобке в прологе функции или закрытой скобке в эпилоге функции; если он соответствует лидирующему символу, вы переходите к открытой скобке, если он отличается от лидирующего символа, вы переходите к закрывающей скобке.

Я использую [[и ]]довольно регулярно, хотя обычно предпочитаю, чтобы меня определили с определением функции. Для меня []и не ][являются интуитивно понятными при редактировании, и я никогда не использую их; Хотелось бы мне понять, как заставить их работать в моем мозгу, потому что это операция, которую я часто выполняю другими способами (например, a}движение часто покрывает меня).

штрих-кот-бэнг
источник