无法通过VIM运行链接脚本

时间:2013-11-16 08:11:44

标签: c++ bash vim g++ linkage

  1. 您好,我写了一个编译几个cpp和目标文件的bash脚本 用g ++。我的目标是通过以下方式在vim中运行脚本:但是 只有当我在外面时,它才能在vim中运行。

  2. 此外,我想了解为什么在脚本中使用% 不会给我当前的文件,但会给出错误 代替。

  3. 脚本:

    #!/bin/bash
    
    # Search for the main module and remove the ext.
    delimain=`grep main *.cpp | cut -d. -f1`
    
    # Checks if there are also object files
    if [ -f ./*.o ]; then
    g++ -g *.cpp *.o -o $delimain.exe
    # If There are only cpp file
    else
    g++ -g *.cpp -o $delimain.exe
    fi
    

    谢谢!

2 个答案:

答案 0 :(得分:1)

重新评论

  

我正在使用ubuntu 13.10别名:别名链接'sh~ / bin / lin_script%'

  1. 您不应该使用显式解释器调用shell脚本; #!/bin/bash第一行告诉shell已经使用了哪个解释器。你显然是Bash的初学者;尝试阅读一些介绍以获得更好的理解。
  2. 别名在Vim 中不起作用,因为它们仅在交互式shell 中定义,但从Vim启动的命令通常在非交互式shell中启动(因为这样更快,并且带来更少的不必要的东西)。
  3. 别名由 shell 解释,但%符号对Vim是特殊的。两者不一样。请参阅我的其他答案如何将文件名传递给脚本。

答案 1 :(得分:0)

当你提供给Vim中的Ex命令时,%会自动展开,这是对的,但这不适用于外部脚本。你需要做的是在调用外部脚本时传递当前文件,并在那里引用命令行参数:

Vim内部:

:!linkage.sh %

在你的剧本中:

if [ $# -gt 0 ]; then
    delimain=$1
else
    delimain=`grep ...