在Ubuntu中實現python按tab鍵補全

來源:互聯網
上載者:User

標籤:python   tab鍵補全   香飄葉子   51cto部落格   

    剛學習python,其實一切都很好接受,因為有過C語言的基礎,感覺一切都來得那麼自然,python極其精簡的文法,讓我真心是愛上這種語言!相信往後python一定會在我的IT生涯中大放光彩!

    好,廢話說完了,入正題。

1.問題引出:預設情況下python互動介面的tab鍵    

    在linux下,或在路由器、交換器上,按tab鍵按得很爽,什麼不完整的,tab一下都出來了,無奈,在linux中安裝的python,預設情況是沒有tab功能的,也就是在python的互動介面中,tab是沒有辦法補全的,python的互動介面只是把它當作正常的多個空格補全來處理:

[email protected]:~/seminar6/day1$ pythonPython 2.7.3 (default, Aug  1 2012, 05:14:39) [GCC 4.6.3] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import sys  >>> sys.     =====>按tab鍵,想看看sys的子模組,結果就是按出了一大堆空格鍵

是啊,這也太噁心了!沒有tab鍵,寶寶不開心!

2.解決方案:自行匯入tab鍵的模組--建立tab.py模組檔案

    問題是,沒有tab鍵的模組,怎麼辦?百度一下吧!不過當時確實找了好多,都找不到一個在我自己的實驗環境中可以使用的,總是提示各種錯誤!還好,總算讓我找到一個可以使用的,下面直接給出tab.py的代碼:

#!/usr/bin/env python# python startup file import sysimport readlineimport rlcompleterimport atexitimport os# tab completion readline.parse_and_bind(‘tab: complete‘)# history file histfile = os.path.join(os.environ[‘HOME‘], ‘.pythonhistory‘)try:    readline.read_history_file(histfile)except IOError:    passatexit.register(readline.write_history_file, histfile)del os, histfile, readline, rlcompleter

把上面的代碼,儲存成tab.py檔案,然後儲存到下面的指定路徑之一:

>>> import sys>>> sys.path[‘‘, ‘/usr/lib/python2.7‘, ‘/usr/lib/python2.7/plat-linux2‘, ‘/usr/lib/python2.7/lib-tk‘, ‘/usr/lib/python2.7/lib-old‘, ‘/usr/lib/python2.7/lib-dynload‘, ‘/usr/lib/python2.7/dist-packages‘, ‘/usr/lib/python2.7/dist-packages/PIL‘, ‘/usr/lib/python2.7/dist-packages/gst-0.10‘, ‘/usr/lib/python2.7/dist-packages/gtk-2.0‘, ‘/usr/lib/python2.7/dist-packages/ubuntu-sso-client‘, ‘/usr/lib/python2.7/dist-packages/ubuntuone-client‘, ‘/usr/lib/python2.7/dist-packages/ubuntuone-control-panel‘, ‘/usr/lib/python2.7/dist-packages/ubuntuone-couch‘, ‘/usr/lib/python2.7/dist-packages/ubuntuone-installer‘, ‘/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol‘]

為了省事點,我直接把tab.py檔案放到/usr/lib/python2.7這個目錄下面好了:

[email protected]:~/seminar6/day1$ sudo mv tab.py /usr/lib/python2.7/[email protected]:~/seminar6/day1$ ll /usr/lib/python2.7/tab.py-rw-rw-r-- 1 xpleaf xpleaf 419  8月  6 23:53 /usr/lib/python2.7/tab.py

3.方案測試:匯入tab模組後,可使用tab鍵補全

下面就可以爽爽地使用tab鍵補全了,不過還是要先在python的互動介面中匯入一下:

[email protected]:~/seminar6/day1$ pythonPython 2.7.3 (default, Aug  1 2012, 05:14:39) [GCC 4.6.3] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import sys    ===>匯入sys模組只是為了下面對tab鍵補全做測試>>> import tab    ===>這才是重點>>> sys.          ===>輸入sys.後按兩次tab鍵sys.__class__(              sys.exit(sys.__delattr__(            sys.exitfunc(sys.__dict__                sys.flagssys.__displayhook__(        sys.float_infosys.__doc__                 sys.float_repr_stylesys.__excepthook__(         sys.getcheckinterval(sys.__format__(             sys.getdefaultencoding(sys.__getattribute__(       sys.getdlopenflags(sys.__hash__(               sys.getfilesystemencoding(sys.__init__(               sys.getprofile(sys.__name__                sys.getrecursionlimit(sys.__new__(                sys.getrefcount(sys.__package__             sys.getsizeof(sys.__reduce__(             sys.gettrace(sys.__reduce_ex__(          sys.hexversionsys.__repr__(               sys.long_infosys.__setattr__(            sys.maxintsys.__sizeof__(             sys.maxsizesys.__stderr__              sys.maxunicodesys.__stdin__               sys.meta_pathsys.__stdout__              sys.modulessys.__str__(                sys.pathsys.__subclasshook__(       sys.path_hookssys._clear_type_cache(      sys.path_importer_cachesys._current_frames(        sys.platformsys._getframe(              sys.prefixsys._mercurial              sys.ps1sys.api_version             sys.ps2sys.argv                    sys.py3kwarningsys.builtin_module_names    sys.pydebugsys.byteorder               sys.setcheckinterval(sys.call_tracing(           sys.setdlopenflags(sys.callstats(              sys.setprofile(sys.copyright               sys.setrecursionlimit(sys.displayhook(            sys.settrace(sys.dont_write_bytecode     sys.stderrsys.exc_clear(              sys.stdinsys.exc_info(               sys.stdoutsys.exc_type                sys.subversionsys.excepthook(             sys.versionsys.exec_prefix             sys.version_infosys.executable              sys.warnoptions>>> sys.

感覺好極了!雖然每次進入python的互動介面都要重新再匯入一次tab模組,可是有總比沒有好!對於我這樣的初學者來說,已經很滿足啦!

本文出自 “香飄葉子” 部落格,請務必保留此出處http://xpleaf.blog.51cto.com/9315560/1682449

在Ubuntu中實現python按tab鍵補全

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.