Ubuntu 带VIM的组件-自动卡舌和x2B;同时执行两个命令

Ubuntu 带VIM的组件-自动卡舌和x2B;同时执行两个命令,ubuntu,assembly,vim,nasm,ld,Ubuntu,Assembly,Vim,Nasm,Ld,我不熟悉NASM,尤其是在ubuntu64中使用vim 目前,当我用vim编写汇编代码时,它不识别标签,也不自动标记,可能是因为它不应该这样做(这不是传统的),尽管我很高兴它也可以这样做。。(与vim上python的自动选项卡类似) 当我按enter键时,它返回到行的开头,红色箭头指向该行 其次,当我需要“编译”(我不知道这里的术语是否正确,可能是“汇编”)代码时,我需要同时编写: nasm -f elf64 hello.asm 及 有没有一种更短的方法?可能两者同时使用,一个简单的二合一命

我不熟悉NASM,尤其是在ubuntu64中使用vim

目前,当我用vim编写汇编代码时,它不识别标签,也不自动标记,可能是因为它不应该这样做(这不是传统的),尽管我很高兴它也可以这样做。。(与vim上python的自动选项卡类似)

当我按enter键时,它返回到行的开头,红色箭头指向该行

其次,当我需要“编译”(我不知道这里的术语是否正确,可能是“汇编”)代码时,我需要同时编写:

nasm -f elf64 hello.asm


有没有一种更短的方法?可能两者同时使用,一个简单的二合一命令?

创建一个shell脚本:创建一个新的文本文件并将其命名为“assembly.sh”或任何您想要的名称,然后键入以下两行

nasm -f elf64 "$1.asm"  &&
 ld -o "$1" "$1.o"              # only try ld if assembling succeeded
您可能希望添加其他选项,以使NASM添加更多或更少的调试信息,具体取决于调试方式
ld-s
将剥离二进制文件,但您通常不希望在调试时使用它

然后必须使用“
chmod+x assemble.sh
”使其可执行


这样您就可以
/assemble.sh hello
。或者把它放在你的~/bin目录中,它就在你的路径中。

我有一个名为
asm link
的脚本,基本上就是这样做的,它支持一些选项,比如
-m32
,和
-d
来分解输出。它将
foo.asm
作为一个输入,因此制表符补全完全有效,并去掉后缀以查找基名称。这是我的答案的一部分,但可能它更适合这个新的问答。你能简单地将两者作为一个复合命令放在一行中,如
nasm…&&ld…
?如果Vim使用shell运行命令,shell将解析&&
nasm -f elf64 "$1.asm"  &&
 ld -o "$1" "$1.o"              # only try ld if assembling succeeded