Как использовать команду 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
  '

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

Спасибо ~ [ 115]

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

2 ответа

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

cat <<-EOF
  au BufReadPost * if line("'\"") > 0|if line("'\"")
  \ <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
EOF
0
ответ дан 29 January 2012 в 08:29

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

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

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

  1. закройте строку перед литералом '
  2. запишите и вышел из одинарной кавычки \'
  3. вновь откройте строку, чтобы продолжить следующие символы

Например:

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
ответ дан 29 January 2012 в 08:29

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

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