
Como resultado de mi pregunta anterior decidí
alias groe= ?vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!'?
No puedo encontrar cómo sustituir '?s' en mi ejemplo para que funcione. Ya probé signos de interrogación y apóstrofes. Cualquier idea sería apreciada. Gracias
Respuesta1
Conviértalo en una función de shell, para que pueda perder las comillas externas.
groe() {
vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!' "$@"
}
Eso debería llamar vim
con los argumentos -c
, normal "+p1Gdddd"
, -c
, :%s/\n/
, -c
, normal"gVGgJy"
, -cq!
. El "$@"
at se expande a los parámetros que le diste a la función, por lo que groe foo.txt
debería funcionar.
Respuesta2
"Dentro" de las comillas simples, puede tener una comilla simple cerrando la comilla simple externa, luego agregue una comilla simple escapada y vuelva a abrir las comillas simples externas, como
echo 'It'\''s ugly.'
En otras palabras, todo '
se convertirá en '\''
comillas simples externas adicionales.
Tu alias se vería así:
alias groe='vim -c '\''normal "+p1Gdddd"'\'' -c '\'':%s/\n/'\'' -c '\''normal"gVGgJy"'\'' -c'\''q!'\'''
O puede usar escapes estilo C $'...'
donde debe escapar de comillas simples solo una vez pero también escapar de caracteres en \n
:
echo $'It\'s a newline: \\n'
alias groe=$'vim -c \'normal "+p1Gdddd"\' -c \':%s/\\n/\' -c \'normal"gVGgJy"\' -c\'q!\''
Respuesta3
En MacOS descubrí que colocar la siguiente línea en my .bash_profile
me dio un alias que solo configura mi alias útil tras el uso posterior del logr
comando:
alias logr="alias r='java -jar LogUtil.jar -gui'"
Utilicé comillas dobles ""
alrededor de todo el logr
alias que se crea para todos los shells nuevos, pero el r
alias solo está disponible una vez que emito el logr
comando.