Как использовать команду echo для отображения '?

например, я хочу эхо:

  "let vim know the last edit position
  au BufReadPost * if line("'\"") > 0|if line("'\"")
  \ <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif

Я попытался, но не смог:

  echo '
  "let vim know the last edit position
  au BufReadPost * if line("\'\"") > 0|if line("\'\"")
  \ <= line("$")|exe("norm \'\"")|else|exe "norm $"|endif|endif
  '

Как показать правильный формат?

Thank вы ~

3
задан 29 January 2012 в 10:29

2 ответа

Вы можете использовать здесь документы:

cat <<-EOF
  au BufReadPost * if line("'\"") > 0|if line("'\"")
  \ <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
EOF
4
ответ дан 25 May 2018 в 14:47
  • 1
    Я собирался ответить на все, что мог, это использовать кошку, а не эхо. – Panther 29 January 2012 в 10:56

Если вы хотите использовать echo, все, что вам нужно сделать, это использовать одинарные кавычки

'string containing many strange characters $ " \ and so'

Единственная проблема возникает из буквенных одинарных кавычек, содержащихся в строке. В этом случае:

закроет строку перед литеральной ' записью и экранированной одинарной цитатой \' снова открыть строку, чтобы продолжить следующие символы

Например: [!d7 ]

aaa'bbb  ==>  'aaa' + \' + 'bbb'  ==>  'aaa'\''bbb'

Очевидно, что если буквальная одинарная кавычка находится в начале или конце строки, нельзя использовать одну из закрывающих или открывающих цитат:

'aaa'bbb  ==>  \' + 'aaa' + \' + 'bbb'  ==>  \''aaa'\''bbb'

Ваша конкретная строка может выводится командой

echo '"let vim know the last edit position
au BufReadPost * if line("'\''\"") > 0|if line("'\''\"")
\ <= line("$")|exe("norm '\''\"")|else|exe "norm $"|endif|endif'
2
ответ дан 25 May 2018 в 14:47

Другие вопросы по тегам:

Похожие вопросы: