Подтвердить что ты не робот

Поддерживает ли Vimscript многострочные строки?

Поддерживает ли Vimscript многострочные строки?

Команды python и ruby ​​позволяют использовать формат: :python << EOF

Можете ли вы сделать что-либо подобное со строками?

4b9b3361

Ответ 1

Vimscript позволяет продолжить предыдущую строку, начиная с обратной косой черты, но это не так удобно, как строка heredoc, например, в Ruby, PHP или Bash.

let g:myLongString='A string
\ that has a lot of lines
\ each beginning with a 
\ backslash to continue the previous one
       \ and whitespace before the backslash
       \ is ignored'

Посмотрите соответствующую документацию по продолжению строки.

Ответ 2

Многострочные строки Vimscript, оператор точки:

Перечисление назначений и включение предыдущих позволяет объединить строки

let foo = "bar" 
let foo = foo . 123 
echom foo                      "prints: bar123 

Используйте оператор объединения составных строк, точка равна:

let foo = "bar" 
let foo .= 123 
echom foo                      "prints: bar123

Составьте список своих строк и чисел и присоединитесь к ним:

let foo = ["I'm", 'bat', 'man', 11 ][0:4] 
echo join(foo)                                   "prints: I'm bat man 11 

То же, что и выше, но объединение с нарезкой массива

let foo = ["I'm", 'bat', 'man', [ "i'm", "a", "mario" ] ] 
echo join(foo[0:2]) . " " . join(foo[3]) 
"prints: I'm bat man i'm a mario

Обратная косая черта в начале строки допускает продолжение строки

let foo = "I don't think mazer 
  \ intends for us to find 
  \ a diplomatic solution" 
echom foo 

let foo = 'Keep falling,  
  \ let the "grav hammer" and environment 
  \ do the work' 
echom foo 

Печать:

I don't think mazer intends for us to find a diplomatic solution
Keep falling, let the "grav hammer" and environment do the work

Скройте свой секретный текст и самые древние тома внутри функции:

function! myblockcomment() 
    (*&   So we back in the club 
    //    Get that bodies rocking 
    !#@   from side to side, side side to side. 
    [email protected]#$   =    %^&&*()+
endfunction 

Место в памяти текста произвольной формы - это файл, в котором он находится на диске. Функция никогда не запускается, иначе интерпретатор будет рвать, так что пока она не будет использована, вы будете использовать vim отражение, чтобы получить реализацию myblockcomment(), а затем делать все, что захотите. Не делайте этого, кроме как ослеплять и путать.

Ответ 3

Вы не можете использовать << для создания строки, но вы можете использовать << для создания списка строк. см. :help :let=<<

ниже приведен пример из VIM DOC

            let text =<< trim END
               if ok
                 echo 'done'
               endif
            END