打开文件时 vi 中的光标位置

打开文件时 vi 中的光标位置
vishex ()
{ 
    echo '#!/bin/bash' > $1;
    chmod +x $1;
    vi $1
}

上述函数的目标是拥有一个别名,以便快速、舒适地创建 bash 脚本。我希望在打开文件时光标不会站在 Shebang 行中,而是位于下面的一行上。我尝试过类似的事情echo 'blabla\n', echo "blala\n", printf "blala\n"但没有任何结果。

答案1

用这个:

vishex () 
{ 
    [ -e "$1" ] || echo -e '#!/bin/bash\n\n' > "$1";
    chmod +x "$1";
    vi "+normal G" +startinsert "$1"
}
  • [ -e "$1" ]检查脚本是否已经存在。如果是,echo则不会覆盖它。
  • -e in echo 可以解释反斜杠转义,例如\n换行符。然后它在 shebang 行后面插入 2 个换行符。
  • +normal G运行 ex 命令G,该命令跳转到文件中的最后一行。
  • +startinsert直接切换到插入模式(您也可以保留它,因为它不在提到的问题中)。

因此,执行时vishex script如下所示:

#!/bin/bash

<- cursor is here
~
[...]
~
-- INSERT --                                                               3,1           All

答案2

假设你的实际上是维姆,来自联机帮助页:

+[num]   For  the  first file the cursor will be positioned on line "num".
         If "num" is missing, the cursor will be positioned  on  the  last line.

因此,使用:

vi + "$1"

相关内容