Как уберечь vim от добавления отступов в строки?

Я хочу быть в состоянии 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.

3 ответа

Вы можете объединить строки так:

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

либо отключите отступ:

:setlocal noautoindent
:setlocal nosmartindent

Байтер, вот более правильный способ достичь того, чего ты добиваешься, вместе с некоторыми советами для любых других начинающих.

Прежде всего, вы не должны хранить свои собственные оболочки в каком-либо старом месте, особенно в /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

ИЛИ использовать кошку EOF | EOL, который будет работать на вас, если вы
не указывайте отступ с дефисом "-" см.

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

$foo
>really long
string

В заключение> Это решает вашу проблему, предоставляя ненавязчивый способ использования строк в bash.

Это мое текущее решение, какие-либо аргументы или заголовки?
Это будет добрее к потребностям проекта
это требует гибкости, в том числе:

  1. не зависит от текстовой ширины =? многопользовательской среды
  2. не зависит от auto [[отступ | формат]* (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

Вы могли бы сделать больше как... расширить эхо с этим как встроенный...

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