6

私は最近lispを学び始め、主にclispとvimを使ってbinを使っています。sbclも試してみたかったのです。これは、最高の無料のlispコンパイラの1つとして推奨されることが多いからです。ただし、sbclを使用するのが難しくなることが1つあります。それは、clispにあるREPLでオートコンプリートを取得できないことです。つまり、sbclを起動して次のように入力すると(例として)、

* (requi<tab>

ここ<tab>で、はリテラルのタブ文字です。補完のリストは表示されませんが、詳細なタブ文字が表示されます。clispで<tab>、前の行をに完了し* (requireます。

私はlispにかなり慣れていないので、clispのオートコンプリート機能は本当に便利です。したがって、誰かがsbclでそれを取得する方法を説明できれば非常に便利です。

4

4 に答える 4

8

SBCLで自動完了replを取得する1つの方法は、 http: //common-lisp.net/project/linedit/からlineditを使用することです。2つ目は、適切な補完ファイルとともに、readlineラッパーであるrlwrapを使用することです。(これらはどちらもemacsほど一般的に使用されていないと言っても過言ではありません。もちろん、他の多くの便利な機能を備えた完全なREPLも提供します。)

于 2011-03-22T08:30:07.333 に答える
5

SBCLでオートコンプリートREPLを取得する方法はわかりませんが、SLIME内からLisp環境に接続するのは非常に便利であり、その時点でCcCiを使用してオートコンプリートを実行できます。

于 2011-03-21T15:39:45.943 に答える
2

実際、それは完全に可能です。はい、EmacsとSlimeを介してCommon Lispを操作したいと考えています(私はSLYが好きです)。しかし、それは初心者がヒットする別の壁です。

REPLからプレイしたいですか?次の手順では、rlwrapを使用してSBCLでオートコンプリートを実行できます。

https://www.cliki.net/CMUCL%20Hints

1)rlwrapをインストールします

2)シェルエイリアスを作成します。たとえば、次のようなテキストを配置します

alias rs="rlwrap sbcl"

〜/ .bashrc(または〜/ .profileなど)に挿入します。(または、「rlwrapsbcl」を介してsbcl rlwrappedを引き続き呼び出すことができます)

3)Edi Weitzが完成リストファイルを作成しましたが、これは彼のWebサイトから削除されたため、インターネットアーカイブにリンクしています。このワードリストをファイル「sbcl」に保存します https://web.archive.org/web/20031207221537/http://weitz.de/files/cmucl_completions

4)Clikiの指示に従ってファイルを配置してみることができます。これは、ログインしているユーザーにのみ適用されます。すべてのユーザーが使用できるようにしたかったので、「sbcl」ファイルを/ usr / share / rlwrap /completions/にあるrlwrap完了ディレクトリに配置しました。

これで、単語を含むファイル/ usr / share / rlwrap / completions/sbclができました。

5)〜/ .inputrcファイルを作成/調整し、行を追加します

TAB: complete

5)完了しました。新しいターミナルで(または.bashrcをリロードした後)、エイリアス「rs」を使用してrlwrap経由でSBCLを起動し、入力を開始(def(またはその他)してTabキーを押すと、オートコンプリートの提案が表示されます。

初心者ボーナス-ターミナルでlispを編集したい場合は、REPLから、たとえば、parinferを使用してvimを使用して、Magic-edを試してください。これにより、REPLからファイルを編集できるようになります。EDを使用するようにSBCLを構成することは難解です。これはあなたのためにその問題を解決します。 https://github.com/sanel/magic-ed タブのオートコンプリートと、ターミナルからlispを編集する便利な方法を使用して、ターミナルでCommonLispの学習を開始できます。

于 2020-02-18T12:59:42.610 に答える
0

sbcl、emacs、slimeを使用したい場合は、LinuxでのこのModernCommonLispチュートリアルに従ってください。チュートリアルでは、インストールquicklisp、特に(ql:quickload "quicklisp-slime-helper")スライムにオートコンプリートを実行させるelispscriptなどについて説明しています。

于 2015-09-06T10:23:03.443 に答える