Kích hoạt tự động hoàn thành trong trình bao tương tác sqlite3


22

Tôi đang sử dụng sqlite3 trên một máy mà tôi có thể sử dụng hoàn thành tab (tức là .read abc sẽ tự động hoàn thành thành .read abcdefghij.db. Tôi muốn biết cách kích hoạt tính năng này trên máy cá nhân của mình.

Cả hai máy đều là linux linux và shell là bash. Tôi đang đề cập đến tự động hoàn thành trong dấu nhắc tương tác sqlite.

Ban đầu được đăng trên dba .

Câu trả lời:


12

Biên dịch chương trình với supoort readline. Readline là một thư viện phổ biến xử lý đầu vào của người dùng trong các trình thông dịch như bash và python. Lấy nguồn, các phụ thuộc và cấu hình với:

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

Tham khảo tệp CÀI ĐẶT để biết chi tiết. Ngoài ra, điều đáng nói là có thể có các nhị phân của sqlite3 với sự hỗ trợ về đường đọc đã được đóng gói cho bản phân phối của bạn. Nhìn xung quanh.


1
bạn có thể đã thiếu gói "-dev" với các tiêu đề cần thiết.
Ярослав Рахматуллин

15

Bạn có thể sử dụng rlwrap nếu bạn không muốn biên dịch sqlite3. Chỉ cần chạy sudo apt install rlwrapvà sau đó thiết lập bí danh cho sqlite3 trong .bashrc:

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

Các -ctùy chọn cho phép bạn hoàn filename.

Và bạn có thể tạo một tệp ~/.rlwrap/sqlite3_completionsđể hoàn thành từ khóa:

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

Các -itùy chọn làm cho trường hợp hoàn thành từ khóa không nhạy cảm.


2
Câu trả lời này xứng đáng được nhiều phiếu bầu hơn. Cũng lưu ý rằng tôi phải xóa -Ntùy chọn để hoàn thành để hoạt động với sqlite3 của Ubuntu.
xhienne

Ngoài ra còn có thư mục /usr/share/rlwrap/completions(như được ghi lại trong tài liệu man rlwrap) để đặt các tệp hoàn thành trên toàn hệ thống cho tất cả người dùng. Một điều cần lưu ý tên tệp hoàn thành trong đó không nên kết thúc bằng _completionhậu tố như trường hợp với thư mục theo người dùng ~/.rlwrap.

1
rlwrap -a -N -c -i -f ~/.rlwrap/sqlite3_completions sqlite3cho người dùng Debian. echo '.help' | sqlite3 | grep -o '^\.[a-z]* ' >> ~/.rlwrap/sqlite3_completionsđể tự động hoàn thành tất cả các lệnh chấm.
zhazha
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.