在 sqlite3 交互式 shell 中启用自动完成

Coa*_*ose 23 autocomplete sqlite

我在可以使用制表符补全的机器上使用 sqlite3(即 .read abc 将自动补全到 .read abcdefghij.db。我想知道如何在我的个人机器上启用它。

两台机器都是ubuntu linux,shell是bash。我指的是 sqlite 交互式提示中的自动完成。

最初发布在dba 上。

are*_*lek 15

如果您不想编译 sqlite3,可以使用rlwrap。只需运行sudo apt install rlwrap,然后在您的.bashrc:中为 sqlite3 设置别名:

alias sqlite="rlwrap -a -N -c -i sqlite3"
Run Code Online (Sandbox Code Playgroud)

该-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
Run Code Online (Sandbox Code Playgroud)

该-i选项使关键字完成不区分大小写。

  • 这个答案值得更多的赞成票。另请注意,我必须删除 `-N` 选项才能完成与 Ubuntu 的 sqlite3 一起使用。 (2认同)

Яро*_*лин 13

使用 readline 支持编译程序。Readline 是一个通用库,用于处理 bash 和 python 等解释器中的用户输入。获取源,依赖项并配置:

user@computer in: ~/src/sqlite-autoconf-3071602
$ ./configure --enable-readline=yes
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅安装文件。此外,值得一提的是,可能已经为您的发行版打包了带有 readline 支持的 sqlite3 二进制文件。环视四周。