Что означает ". =" В скриптах vim? - PullRequest
5 голосов
/ 06 февраля 2011

Я часто видел присваивания переменным вида "let s. = 'Кое-что" "Вот конкретный фрагмент кода в скрипте vim, который я изо всех сил пытался понять:

let s .= '%' . i . 'T'
let s .= (i == t ? '%1*' : '%2*')
let s .= ' '
let s .= i . ':'
let s .= winnr . '/' . tabpagewinnr(i,'$')
let s .= ' %*'
let s .= (i == t ? '%#TabLineSel#' : '%#TabLine#')

Код добавляет номер вкладки (i) и номер области просмотра (winnr из tabpagewinnr(i,'$')) к имени вкладки, так что это выглядит примерно как "1: 2/4 Buffer name". Судя по всему, операция .= добавляет что-то к s. Но тогда я не понимаю, что делают первые две строки. Любая помощь приветствуется.

Ответы [ 2 ]

7 голосов
/ 06 февраля 2011

Вим онлайн помощь ваш друг:

:h .=

 :let {var} .= {expr1}    Like ":let {var} = {var} . {expr1}".

:h expr-.

 expr6 .   expr6 ..   String concatenation

:h expr1 (ну, это немного сложно найти):

 expr2 ? expr1 : expr1

 The expression before the '?' is evaluated to a number.  If it evaluates to
 non-zero, the result is the value of the expression between the '?' and ':',
 otherwise the result is the value of the expression after the ':'.
 Example:
   :echo lnum == 1 ? "top" : lnum

  Since the first expression is an "expr2", it cannot contain another ?:.  The
  other two expressions can, thus allow for recursive use of ?:.
  Example:
    :echo lnum == 1 ? "top" : lnum == 1000 ? "last" : lnum

  To keep this readable, using |line-continuation| is suggested:
    :echo lnum == 1
    :\  ? "top"
    :\  : lnum == 1000
    :\      ? "last"
    :\      : lnum

  You should always put a space before the ':', otherwise it can be mistaken for
  use in a variable such as "a:1".
0 голосов
/ 06 февраля 2011

По одному:


let s .= '%' . i . 'T'

Предполагая, что i = 9 и s = "bleah", s теперь будет "bleah% 9T"


let s .= (i == t ? '%1*' : '%2*')

Это знакомый троичный оператор из C. Если t == 9, то s теперь равно "bleah% 9T% 1 *". Если t - это что-то , но 9, тогда s теперь "bleah% 9T% 2 *"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...