Как уберечь vim от добавления отступов в строки?
Я хочу быть в состоянии gg=G
на моих скриптах bash, или на некоторых вариациях автоформатирования, которые не будут мешать простому эхо.
У меня такое ощущение, что что-то вроде этого не проблема, я просто не нашел правильный способ либо:
- правильно отобразить строку для этого сценария
- введите правильную команду для работы
Если бы кто-нибудь мог мне помочь, это было бы очень ценно.
Что я печатаю:
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.
Это мое текущее решение, какие-либо аргументы или заголовки?
Это будет добрее к потребностям проекта
это требует гибкости, в том числе:
- не зависит от текстовой ширины =? многопользовательской среды
- не зависит от auto [[отступ | формат]* (vim, gedit, notepad++, w/e)
- избежать непредсказуемого выхода, имея полный контроль
где они ненадежны:
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
Вы могли бы сделать больше как... расширить эхо с этим как встроенный...