热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在vim中快速执行erlang脚本

在vim中快速执行erlang脚本-最近打算下定决心学习使用erlang,不过我有点不习惯在erlangshell和vim之间来回切换。想了想,干脆优化一下这个重复的过程吧。就像

最近打算下定决心学习使用erlang, 不过我有点不习惯在erlang shell和vim之间来回切换。
想了想,干脆优化一下这个重复的过程吧。就像我配置了python的执行快捷键一样,每次只要按下F6, 就会执行当前编辑的python脚本,并新开一个terminal,输出程序正常打印的信息或错误信息

编写Hello world 脚本

-module(hello).
-export([say/0, main/0, hi/1]).


hi(Name) ->
    io:format("hi ~s~n",Name).

say() ->
    io:format("hello world~n").

main()->
    io:format("main~n"),
    say().

Erlang执行脚本的方法

  1. erlang shell中执行erl进入erlang shell
    $ erl
    Erlang/OTP 22 [erts-10.5] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
    Eshell V10.5 (abort with ^G)
    1> c(hello).
    {ok,hello}
    2> hello:say().
    hello world
    ok
  2. 在shell中执行 $ erlc hello.erl
    $ erl -noshell -s hello say -s init stop erlc从命令行和启动了erlang编译器,编译器编译了hello.erl
    并生成一个名为hello.beam的目标代码文件 erl -noshell … 加载了hello模块并执行了hello:say()函数,最后,执行init:stop(),终止了erlang会话

这两种都比较麻烦,有没有更简单一点的方法呢?作为一个偷懒的程序猿,我肯定不喜欢这样重复的

我的解决方法

  1. /usr/local/bin/下创建一个可执行的bash脚本,假设名称是exec_erl,内容如下
#!/bin/bash

erl_file_name=$1
shift
fun=$1
shift
if [ -z "$fun" ]; then
    fun=main
fi
erl_mode="${erl_file_name%.*}"
erlc ${erl_file_name}
erl -noshell -s $erl_mode $fun $@ -s init stop

  1. 修改vim配置文件
augroup filetype_erlang
    autocmd!
    autocmd Filetype erlang nnoremap   :w:ter   exec_erl %  
augroup END

小结

在编写一个erlang脚本后,想快速验证,只需要再多写一个main函数并把他export出来,然后再main中调用你的测试方法, 按下F6就可以运行了。

可以愉快地debug脚本了. 其他需要编译的语言,也可以用这个类似的方法解决,不过,应该都比erlang的简单一些

还有一个好处,如果想验证某个方法,可以直接在执行exec_erl filename.erl functionname param1 param2
例如,我想执行hello.erl中say()
exec_erl hello.erl say
如果想执行hi
exec_erl hello.erl hi zhangsan

最后,欢迎大家关注我的微信公众号:匿名程序媛,大家一起挖坑填坑。


推荐阅读
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 在分析Android的Audio系统时,我们对mpAudioPolicy->get_input进行了详细探讨,发现其背后涉及的机制相当复杂。本文将详细介绍这一过程及其背后的实现细节。 ... [详细]
  • C盘无法格式化的原因及解决方法
    本文探讨了C盘无法格式化的原因,并提供了详细的解决方案,帮助用户顺利进行系统维护。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 单片机入门指南:基础理论与实践
    本文介绍了单片机的基础知识及其应用。单片机是一种将微处理器(类似于CPU)、存储器(类似硬盘和内存)以及多种输入输出接口集成在一块硅片上的微型计算机系统。通过详细解析其内部结构和功能,帮助初学者快速掌握单片机的基本原理和实际操作方法。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
author-avatar
A梁仔乀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有