24 命令行工具和你的编辑器选择

虽然DrRacket是大多数人用Racket开始的最简单的方法,许多Racket使用者喜欢命令行工具和其它文本编辑器。Racket分配包括几个命令行工具,流行的编辑器包括或支持包以使它们能很好地配合Racket。

24.1 命令行工具

24.1.1 同时编译和配置:raco

24.1.2 交互式求值

24.1.3 Shell补全

24.2 Emacs

24.2.1 主要模式

24.2.2 小模式

24.2.3 Evil模式的专有包

24.3 Vim

24.4 Sublime Text

24.1 命令行工具

作为其标准发行版的一部分,Racket提供了许多命令行工具,这些工具可以使racket使用者更加愉快。

24.1.1 同时编译和配置:raco

raco(以下简称“Racket command”)程序为了编译Racket程序和维护一个Racket安装提供了一个命令行界面给许多额外的工具。

  • raco make将Racket源文件编译成字节码。

    例如,如果你有一个程序"take-over-world.rkt"并且你想把它编译成字节码,连同其所有的依赖,使其加载速度更快,然后运行

    raco make take-over-the-world.rkt

    字节码文件在一个"compiled"子文件夹中被写为"take-over-the-world_rkt.zo"“;".zo"是一个字节码文件的文件后缀。

  • raco setup管理一个Racket安装,包括手动安装包。

    例如,如果你创建了自己的名为"take-over"的库集合(collection),并且希望为集合构建所有字节码和文档,则运行

    raco setup take-over

  • raco pkg管理package,它可以通过Racket包管理器被安装。

    例如,要查看已安装包的列表,运行:

    raco pkg show

    安装一个名为<package-name>的新包,运行:

    raco pkg install <package-name>

    参见(part ("(lib pkg/scribblings/pkg.scrbl)" "top"))以获得关于包管理器的更多细节。

为了获得有关raco的更多细节,见(part ("(lib scribblings/raco/raco.scrbl)" "top"))。

24.1.2 交互式求值

Racket REPL提供了你从现代交互环境中所期望的一切。例如,它提供了一个,enter命令以使REPL在给定模块的上下文中运行,并提供了一个,edit命令来调用你输入的文件上的编辑器(由EDITOR环境变量指定)。,drracket命令可以很容易地使用你最喜欢的编辑器编来编写代码,同时仍有DrRacket可以尝试。

有关详细信息,请参见(part ("(lib xrepl/xrepl.scrbl)" "top"))。

24.1.3 Shell补全

bash和zsh的Shell自动完成功能分别在"share/pkgs/shell-completion/racket-completion.bash"和"share/pkgs/shell-completion/racket-completion.zsh"中提供。

要启用它,只需从.bashrc或.zshrc运行相应的文件。

"shell-completion"集合仅在Racket Full发行版中可用。完成脚本也可在联机。

24.2 Emacs

Emacs一直是一个在Lisp使用者和Scheme使用者中特别受欢迎的,并且也是在Racket使用者中流行的。

24.2.1 主要模式

  • Racket模式通过语法高亮和DrRacket风格REPL及Emacs缓冲区执行对Emacs支持。

    Racket模式可以通过MELPA或安装melpa或手动从GitHub库安装。

  • Quack是一个为Racket提供更有力的支持的Emacs的scheme模式(scheme-mode)的扩展,包括高亮和Racket特定形式的缩进,以及文档一体化。

    Quack是包含在Debian和Ubuntu库里作为emacs-goodies-el包的一部分。一个Gentoo端口也可获取的(在名字app-emacs/quack下)。

  • Geiser提供了一个编程环境,编辑器和Racket的REPL紧密集成。习惯用Slime或Squeak环境的程序员使用Geiser应该有宾至如归的感觉。Geiser要求GNU Emacs 23.2或更高的版本。

    Quack和Geiser可以一起使用,并且相辅相成。更多信息见Geiser手册。

    为Geiser提供的Debian和Ubuntu软件包在名称geiser下适可获取的。

  • Emacs用一个为Scheme的主要模式传递,Scheme模式,而不是与上面的选项一样的特性,合理地编辑Racket代码。然而,这种模式并不能为Racket特定形式提供支持。

  • 没有文件,Racket项目是不完整的。Scribble支持emacs可用Neil Van Dyke的Scribble模式获取。。

    此外,当编辑Scribble文件的时候,texinfo模式(包括用GNU Emacs)和纯文本模式工作会非常好。鉴于与Racket相比Scribble语法是如此不同,上边的Racket主要模式不是真正的适合这种任务。

24.2.2 小模式

  • Paredit是在LISP类似语言中伪结构编辑程序的一个小模式。除了提供高阶S表达式编辑命令外,它可以帮你防止意外的不平衡括号。

    对Paredit的Debian和Ubuntu软件包在名字paredit-el下可以获取。

  • Smartparen对编辑S表达式是一个小模式,保持括号平衡、类似于Paredit等等。

  • Alex Shinn的scheme-complete提供了智能的、上下文敏感的代码完成。它还用Emacs的eldoc模式集成以在小缓冲区中提供现场文档。

    而这种模式是专为R5RS设计,它仍能用于Racket的开发。该工具不知道Racket标准库的大部分,而且在Scheme和Racket有分歧的情况下,现场文档可能有一些出入。

  • RainbowDelimiters模式颜色括号和其它分隔符根据嵌套深度确定。通过嵌套深度着色使人们一目了然地知道哪些圆括号匹配。

  • ParenFace让你选择在哪面(字体,颜色,等等)的括号应显示。选择一个交替的面可以使“tone down(按下)”括号。

24.2.3 Evil模式的专有包

  • on-parens是对smartparens行为用evil模式的通常状态去更好工作的一个包装。

  • evil-surround提供命令去添加、删除和改变括号和其它分隔符。

  • evil-textobj-anyblock添加一个文本对象相匹配最接近的任何括号或其它分隔符序对。

24.3 Vim

带Scheme支持的Vim运送的许多分配,它们将更多地用于Racket工作。你可以像Scheme一样用以下方式激活Racket文件的文件类型检查:

if has("autocmd")

au BufReadPost *.rkt,*.rktl set filetype=scheme

endif

或者,你可以使用vim-racket插件来实现自动检测、缩进和专门针对Racket文件的语法高亮显示。使用插件是最简单的方法,但是如果你想把你自己的设置或重写插件设置,添加类似于下面的内容到你的".vimrc"文件:

if has("autocmd")

au BufReadPost *.rkt,*.rktl set filetype=racket

au filetype racket set lisp

au filetype racket set autoindent

endif

然而,如果您采取这一路径,你可能需要在安装插件时做更多的工作,因为很多与Lisp相关的插件和vim脚本都不知道Racket。你也可以在一个"scheme.vim"中或在vim文件夹的"ftplugin"子文件夹中的"racket.vim"文件中设置这些条件命令。

vim的大多数安装会自动具有有用的默认启用,但如果你的安装没有,你会希望至少在你的".vimrc"文件里去设置:

" Syntax highlighting

syntax on

" These lines make vim load various plugins

filetype on

filetype indent on

filetype plugin on

" No tabs!

set expandtab

缩格

你可以通过在Vim里设置lisp和autoindent(自动缩格)选项启用Racket的缩格。然而,缩格是有限的也不是和你在Emacs中能得到的一样完整。你也可以用Dorai Sitaram的scmindent达到Racket代码的更好缩格。有关如何使用缩格器的说明可在网站上查阅。

如果使用内置的缩格器,可以通过设置如何缩进某些关键字来定制它。上面提到的vim-racket插件为你设置了一些默认关键字。你可以在你的".vimrc"文件里添加你自己的关键字,像这样:

" By default vim will indent arguments after the function name

" but sometimes you want to only indent by 2 spaces similar to

" how DrRacket indents define. Set the `lispwords' variable to

" add function names that should have this type of indenting.

set lispwords+=public-method,override-method,private-method,syntax-case,syntax-rules

set lispwords+=..more..

突出

用于可视化的彩虹括号(Rainbow Parenthesis})脚本可以用于更可见的括号匹配。在许多平台上,有很多功能都是通过高亮显示来实现的。为你提供了良好的默认高亮显示设置。

结构化的编辑

Slimv插件有一paredit模式,就像Emacs里的paredit工作方式。然而,插件不知道Racket。你可以设置Vim去把Racket作为Scheme文件,也可以修改paredit脚本以加载".rkt"文件。

Scribble

Vim support for writing scribble documents is provided by the scribble.vim plugin. 对书写scribble文件,Vim通过scribble.vim插件被支持。

混杂的

如果你安装了很多Vim插件(不需要特别针对Racket),我们建议使用一个插件,让其它插件更容易加载。Pathogen是一个这样做的插件;使用它,你可以通过在你Vim安装的"bundle"文件夹里提取它们到子目录来安装新插件。

24.4 Sublime Text

Racket package支持语法高亮显示和构建 Sublime Text。

Racket编程指南——24 命令行工具和你的编辑器选择相关推荐

  1. php 开启命令模式,如何启用PhpStorm中的命令行工具

    本篇文章主要给大家介绍如何使用phpstorm中的命令行工具. PhpStorm下载地址: PhpStorm使用命令行工具,我们可以直接从IDE调用命令!在我们使用任何命令行工具之前,我们必须在设置中 ...

  2. 《现代命令行工具指南》9. 删除文件:让删除文件变得安全可控 - trash-cli

    ​好工具就是生产力,这是专栏<现代命令行工具指南>精讲的第 9 个命令行工具,欢迎品鉴. 把文件删了,突然后悔了,怎么办? 恢复呗! 一般操作系统中都有个回收站,用来临时存放被删除的文件, ...

  3. 《现代命令行工具指南》10. 管理工具:在隔离环境中安装和运行 Python 命令行工具 - Pipx

    ​好工具就是生产力,这是专栏<现代命令行工具指南>精讲的第 10 个命令行工具,欢迎品鉴. 很多强大的命令行工具都是用 Python 编写的,比如,poetry.trash-cli.bla ...

  4. 《现代命令行工具指南》11. 帮助手册:只给你最有用的帮助信息 - tldr

    ​好工具就是生产力,这是专栏<现代命令行工具指南>精讲的第 11 个命令行工具,欢迎品鉴. 命令行工具太多了,我们不可能把所有命令的用法都记住,因此帮助手册(man)就成了我们经常查阅的东 ...

  5. 《现代命令行工具指南》8. 备忘清单:让常用命令能够信手拈来 - navi

    ​好工具就是生产力,这是专栏<现代命令行工具指南>精讲的第 8 个命令行工具,欢迎品鉴. 命令用完就忘怎么办?命令太复杂记不住怎么办? 用备忘录啊,把常用的.复杂的.记不住的命令记下来,以 ...

  6. 《现代命令行工具指南》15.表情符号:在命令行中查找表情符号 - emoj

    ​好工具就是生产力,这是专栏<现代命令行工具指南>精讲的第 15 个命令行工具,欢迎品鉴. 在互联网世界,emoji 表情符号可谓是随处可见,不管是微信聊天.微博.甚至视频中都经常出现,而 ...

  7. 《现代命令行工具指南》12. 智能纠错:让随口一骂就能解决问题 - thefuck

    ​好工具就是生产力,这是专栏<现代命令行工具指南>精讲的第 12 个命令行工具,欢迎品鉴. 我们在终端工作时,经常会因为心急手快而敲错命令,也经常因为权限不够而阻断命令的执行,遇到这样的问 ...

  8. 《现代命令行工具指南》3. 选取字符:让选取字符变得轻而易举 - choose

    ​好工具就是生产力,这是专栏<现代命令行工具指南>精讲的第 3 个命令行工具,欢迎品鉴. 假如有一行文本是: choose sections from each line of files ...

  9. windows powershell实战指南(第3版)_Windows命令行工具cmder配置(转)

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 作者:memor链接:https://segmentfault.com/a/1190000011361877 来源:http://s ...

  10. GitHub日收12000星,微软新命令行工具引爆程序员圈!

    作者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 继上次微软开源计算器刷爆GitHub后,今天凌晨在微软Build大会登场的Windows Terminal,如旋风般目前已登顶GitHu ...

最新文章

  1. 【Smart_Point】unique_ptr中独占指针使用MakeFrame
  2. ip分片 tcp分段(转)
  3. 无法实现接口成员,因为它不是公共的——interface
  4. JAVA多线程和并发基础面试问答(转载)
  5. leetcode 1631. 最小体力消耗路径(并查集)
  6. 搜狗输入法Android5.1,ESXI 服务器断电之后一直 LOADING MODULE IPMI_SI_DRV 的解决办法...
  7. 我的世界怎么设置服务器维护中,我的世界服务器
  8. Kotlin学习笔记21 协程part1 基本概念
  9. 技嘉ide模式怎么改,电脑BIOS中怎么设置硬盘为IDE模式
  10. 微信服务号认证和不认证的区别
  11. 启动计算机显示屏没反应,电脑开机后显示器无反应怎么办
  12. Error connecting to node kafka:9092 (id: 1001 rack: null)
  13. 我设计的五笔日本语输入法和韩语输入法初稿图
  14. NFT市场如何拆分Opensea?
  15. 算法竞赛入门【码蹄集进阶塔335题】(MT2001-2025)
  16. 【整理】EFI/UEFI BIOS 入门 : All For Beginners
  17. java Excel导出工具类
  18. Chained Declustering
  19. Excel 代码编写 统一去掉单元格左上角的三角符号
  20. 高德、腾讯、百度实时路况切片地址

热门文章

  1. 【Java基础】ArraylistLinkedList机制,failfastfailsafe
  2. 计算机复试专业课笔试,关于计算机考研专业课的考试内容
  3. 省考计算机专业课考什么,计算机考研专业课考什么
  4. 交换机和集线器的区别
  5. VBA学习练习-将多个单元格内容合并
  6. 蒙特卡罗方法C语言求定积分,蒙特卡罗方法计算定积分
  7. 文献阅读1:Deep Learning for Image Super-resolution: A Survey
  8. DNS 协议是什么?
  9. Flutter开发之——Future<dynamic> is not a subtype of type () void
  10. 阿里云服务器地域的选择