Как упоминалось в названии, это должно быть что-то простое, но для жизни меня я не могу заставить его работать правильно.
Я пишу небольшой исполняемый скрипт, который позаботится о введя столь необходимое место интерпретатора для первой строки скрипта и открывая новый скрипт для редактирования. Хорошо, круто ... сделано: printf "#!%s" $(which bash) > $1; vim $1. Достаточно просто.
Если проблема, воспринимаемая только как проблема, потому что мне любопытно, как это сделать и чего я не достигаю, есть сценарий, который автоматически запускает меня в строке 2 в режиме вставки. Таким образом, я нахожусь на пустой строке, готов к работе ... не теряя 0,5 секунды или около того, чтобы нажать «o» (я использую vim в качестве текстового редактора для справки).
Итак, я угадайте, мой вопрос: как мне получить мой автоматический скрипт для имитации нажатия «o», когда вновь созданный скрипт открывается с выходом «#! $(which bash)» в первой строке?
Все пробовали:
Использование символа новой строки, экранированного с помощью printf: printf "#!%s\n" $(which bash) > $1 Использование эха с символом символа новой строки: echo -e "#!$(which bash)\n" > $1То, что вы пробовали, не поможет, так как это не зависит от содержимого файла; скорее, это зависит от текстового редактора.
В Vim должно работать следующее:
vim "$file" +'$normal o' +'startinsert'
Каждый аргумент + интерпретируется в «командном режиме»; обычно это номер строки, но любая команда действительно работает. :$normal o добавляет пустую строку после последней строки (это уродливо, но я не мог думать ни о каком другом); :startinsert переходит в режим вставки.