
Como resultado da minha pergunta anterior, decidi
alias groe= ?vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!'?
Não consigo descobrir como substituir '?s' no meu exemplo para que funcione. Já tentei pontos de interrogação e apóstrofos. Qualquer idéia seria apreciada. THX
Responder1
Torne-a uma função shell, para que você possa perder as aspas externas.
groe() {
vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!' "$@"
}
Isso deve chamar vim
com os argumentos -c
, normal "+p1Gdddd"
, -c
, :%s/\n/
, -c
, normal"gVGgJy"
, -cq!
. O "$@"
at the se expande para os parâmetros que você deu à função, então groe foo.txt
deve funcionar.
Responder2
Aspas simples "dentro" você pode ter uma aspa simples fechando a aspa simples externa, depois adicionar uma aspa simples com escape e reabrir as aspas simples externas, como
echo 'It'\''s ugly.'
Em outras palavras, tudo '
se tornará '\''
mais aspas simples externas.
Seu alias ficaria assim:
alias groe='vim -c '\''normal "+p1Gdddd"'\'' -c '\'':%s/\n/'\'' -c '\''normal"gVGgJy"'\'' -c'\''q!'\'''
Ou você pode usar escapes no estilo C, $'...'
onde você precisa escapar de aspas simples apenas uma vez, mas também escapar de caracteres em \n
:
echo $'It\'s a newline: \\n'
alias groe=$'vim -c \'normal "+p1Gdddd"\' -c \':%s/\\n/\' -c \'normal"gVGgJy"\' -c\'q!\''
Responder3
No MacOS, descobri que colocar a seguinte linha no meu .bash_profile
me deu um alias que só configura meu alias útil após o uso posterior do logr
comando:
alias logr="alias r='java -jar LogUtil.jar -gui'"
Usei aspas duplas ""
em todo o logr
alias criado para todos os novos shells, mas o r
alias só fica disponível quando eu emito o logr
comando.