Bir sqlite3 etkileşimli kabuğunda otomatik tamamlamayı etkinleştir


22

Sekme tamamlamayı kullanabileceğim bir makinede sqlite3 kullanıyorum (yani .read abc .read abcdefghij.db'ye otomatik olarak tamamlanacaktır. Bunu kişisel makinemde nasıl etkinleştireceğimi bilmek istiyorum.

Her iki makine de ubuntu linux ve kabuk bash. Ben sqlite interaktif bilgi isteminde otomatik tamamlama atıfta bulunuyorum.

Başlangıçta dba gönderildi .

Yanıtlar:


12

Programı readline desteği ile derleyin. Readline, bash ve python gibi tercümanlarda kullanıcı girişini işleyen ortak bir kütüphanedir. Kaynağı, bağımlılıkları getirin ve aşağıdakilerle yapılandırın:

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

Ayrıntılar için INSTALL dosyasına bakın. Ayrıca, dağıtımınız için önceden paketlenmiş readline desteğine sahip muhtemelen sqlite3 ikili dosyaları olduğunu belirtmek gerekir. Etrafa bak.


1
muhtemelen gerekli başlıkları içeren "-dev" paketini kaçırıyordunuz.
Ярослав Рахматуллин

15

Sqlite3 derlemek istemiyorsanız, rlwrap kullanabilirsiniz . Sadece çalıştırın sudo apt install rlwrapve sqlite3 için bir takma ad oluşturun .bashrc:

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

-cSeçenek, dosya tamamlamaları verir.

Ayrıca ~/.rlwrap/sqlite3_completions, anahtar kelime tamamlamaları için bir dosya oluşturabilirsiniz :

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

Bu -iseçenek, anahtar kelime tamamlama durumunu duyarsız hale getirir.


2
Bu cevap çok daha fazla oyu hak ediyor. Ayrıca -Ntamamlamanın Ubuntu'nun sqlite3 ile çalışması seçeneğini kaldırmak zorunda olduğumu unutmayın .
17'de xhienne

Ayrıca tüm kullanıcılar için sistem genelinde tamamlama dosyaları koymak için /usr/share/rlwrap/completions(içinde belgelendiği gibi man rlwrap) bir dizin vardır. Orada tamamlama dosya adlarını not etmek için bir şey, _completionkullanıcı başına ~/.rlwrapdizinde olduğu gibi sonek ile bitmemelidir .

1
rlwrap -a -N -c -i -f ~/.rlwrap/sqlite3_completions sqlite3Debian kullanıcıları için. echo '.help' | sqlite3 | grep -o '^\.[a-z]* ' >> ~/.rlwrap/sqlite3_completionsTüm nokta komutlarını otomatik tamamlama.
zhazha
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.