sqlite3インタラクティブシェルでオートコンプリートを有効にする


21

タブ補完を使用できるマシンでsqlite3を使用しています(つまり、.read abcは.read abcdefghij.dbに自動補完されます。個人用マシンでこれを有効にする方法を知りたいです)。

両方のマシンはubuntu linuxであり、シェルはbashです。sqliteの対話型プロンプトでオートコンプリートを参照しています。

もともとdbaに投稿されました。

回答:


12

readline supoortでプログラムをコンパイルします。Readlineは、bashやpythonなどのインタープリターでのユーザー入力を処理する一般的なライブラリです。ソース、依存関係を取得し、次を使用して設定します。

user@computer in: ~/src/sqlite-autoconf-3071602
$ ./configure --enable-readline=yes

詳細については、INSTALLファイルを参照してください。また、あなたのディストリビューション用に既にパッケージ化されたreadlineサポートを備えたsqlite3のバイナリがあることに言及する価値があります。見回す。


1
おそらく、必要なヘッダーを含む「-dev」パッケージが欠落していました。
ЯрославРахматуллин

14

sqlite3をコンパイルしたくない場合は、rlwrapを使用できます。を実行しsudo apt install rlwrap、次にでsqlite3のエイリアスを設定します.bashrc

alias sqlite="rlwrap -a -N -c -i sqlite3"

この-cオプションは、ファイル名の補完を提供します。

また、~/.rlwrap/sqlite3_completionsキーワードを補完するファイルを作成できます。

ABORT ACTION ADD AFTER ALL ALTER ANALYZE AND AS ASC ATTACH AUTOINCREMENT BEFORE BEGIN BETWEEN BY CASCADE CASE CAST CHECK COLLATE COLUMN COMMIT CONFLICT CONSTRAINT CREATE CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP DATABASE DEFAULT DEFERRABLE DEFERRED DELETE DESC DETACH DISTINCT DROP EACH ELSE END ESCAPE EXCEPT EXCLUSIVE EXISTS EXPLAIN FAIL FOR FOREIGN FROM FULL GLOB GROUP HAVING IF IGNORE IMMEDIATE IN INDEX INDEXED INITIALLY INNER INSERT INSTEAD INTERSECT INTO IS ISNULL JOIN KEY LEFT LIKE LIMIT MATCH NATURAL NO NOT NOTNULL NULL OF OFFSET ON OR ORDER OUTER PLAN PRAGMA PRIMARY QUERY RAISE RECURSIVE REFERENCES REGEXP REINDEX RELEASE RENAME REPLACE RESTRICT RIGHT ROLLBACK ROW SAVEPOINT SELECT SET TABLE TEMP TEMPORARY THEN TO TRANSACTION TRIGGER UNION UNIQUE UPDATE USING VACUUM VALUES VIEW VIRTUAL WHEN WHERE WITH WITHOUT

この-iオプションは、キーワード補完の大文字と小文字を区別しません。


2
この答えは、さらに多くの賛成に値します。また-N、Ubuntuのsqlite3 を使用するには、完了のためのオプションを削除する必要がありました。
xhienne

すべてのユーザー用のシステム全体の補完ファイルを配置するためのディレクトリもあります/usr/share/rlwrap/completions(に記載さman rlwrapれています)。そこにある補完ファイル名に注意することの1つ_completionは、ユーザーごとの~/.rlwrapディレクトリの場合のように、接尾辞で終わるべきではありません。

1
rlwrap -a -N -c -i -f ~/.rlwrap/sqlite3_completions sqlite3Debianユーザー向け。echo '.help' | sqlite3 | grep -o '^\.[a-z]* ' >> ~/.rlwrap/sqlite3_completionsすべてのドットコマンドを自動補完します。
zhazha
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.