4

我希望能够gg=G使用我的 bash 脚本,或者一些不会阻碍简单回声的自动格式变体。

我觉得这样的事情不是问题,我只是还没有找到正确的方法:

  1. 在这种情况下正确回显字符串
  2. 为作业发出正确的命令

如果有人可以帮助我,将不胜感激。

我输入的内容:

someFun()
{
    echo "Some really long string that is going to be automatically
    indented.";
}

我在提示中看到的

>./someFun  
Some really long string that is going to be automatically
    indented.
4

3 回答 3

1

您可以像这样连接字符串:

echo "Some really long string that is going to be automatically" \
"indented."

要么关闭缩进:

:setlocal noautoindent
:setlocal nosmartindent
于 2012-12-02T17:50:50.767 回答
0

拜特,这是实现您所追求的更合适的方法,以及对任何其他初学者的一些提示。

首先,您不应该将自己的 shell 存放在任何旧的地方,尤其是 /usr/bin。如果您有自定义应用程序,我建议您将其存储在/opt或 /usr/local/bin 中。


其次,这个特殊的外壳不应该是任何应用程序的先决条件,它的用途与现有的不同。


相反,请参阅以下示例:

问题>

foo()
{
    echo "A string that gets affected by auto-format, is a pretty long
    string";
}

$foo
>A string that gets affected by auto-format, is a pretty long
    string

解决方案>

foo()
{
    longString='A really long
    \nstring';
    echo -e $longString

}

$foo
>A really long
string

使用cat EOF | EOL
,如果您 不使用连字符“-”指定缩进,它将为您工作,请参阅:

foo()
{
    cat <<-EOL
    really long
    string 
    EOL
}    

$foo
>really long
string

结论>这通过提供一种在 bash 中使用字符串的非侵入性方式来解决您的问题。

于 2012-12-28T19:28:17.043 回答
0

这是我目前的解决方案,有任何争论或提示吗?
这将更适合
需要灵活性的项目的需求,包括:

  1. 不受 textwidth=? 多用户环境
  2. 不受 auto-[indent|format]* (vim, gedit, notepad++, w/e) 的影响
  3. 通过完全控制避免不可预测的输出

这些不可靠的地方:
cat << EOF ... EOF    或     使用“\”转义回声


我做了一个文件 /usr/bin/yell

printTrueString()
{    
    local args=$@;
    echo $args;
    unset args;
}

printTrueString "$@";
exit 0


现在...

sumFun()
{      
    #auto-indent all you want VIM or w/e!...
    yell "hello mad
    world"

    #just like echo -e 
    yell -e "hello\nmad\nworld"        
}  
sumFun;
exit 0

#stays on one line, where the echo would split     
>hello mad world
>hello
mad
world

你可以做更多类似...扩展回声作为内置...

于 2012-12-05T00:22:05.790 回答