Como usar o comando echo para mostrar '?

3

por exemplo eu quero ecoar:

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

Eu tentei, mas falhei:

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

Como mostrar o formato correto?

Obrigado ~

    
por sam 29.01.2012 / 05:20

2 respostas

4

Você pode usar documentos aqui :

cat <<-EOF
  au BufReadPost * if line("'\"") > 0|if line("'\"")
  \ <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
EOF
    
por Sergey 29.01.2012 / 05:41
2

Se você quiser usar echo , tudo o que você precisa fazer é usar aspas simples

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

O único problema é colocado por aspas simples contidas na string.
Nesse caso:

  1. feche a string antes do literal '
  2. escreva e escape aspas simples \'
  3. reabra a string para continuar com os seguintes caracteres

Por exemplo:

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

Obviamente, se a aspa simples literal estiver no início ou no final da string, uma das frases de fechamento ou abertura não deve ser usada:

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

Sua string específica pode ser enviada com o comando

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