Readline 庫的快捷鍵綁定和其它一些參數可以通過名為?~/.inputrc?的初始化文件的替換命名來定制。快捷鍵綁定如下形式:
`key-name: function-name`
或者:
`"string": function-name`
選項可以如下設置:
`set option-name value`
例如:
~~~
# I prefer vi-style editing:
set editing-mode vi
# Edit using a single line:
set horizontal-scroll-mode On
# Rebind some keys:
Meta-h: backward-kill-word
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
~~~
需要注意的是 Python 中默認?Tab?綁定為插入一個?Tab?字符而不是 Readline 庫的默認文件名完成函數,如果你想用這個,可以將以下內容插入:
`Tab: complete`
到你的?~/.inputrc?中來覆蓋它。(當然,如果你真的把?Tab?設置成這樣,就很難在后繼行中插入縮進。)
自動完成變量和模塊名也可以激活生效。要使之在解釋器交互模式中可用,在你的啟動文件中加入下面內容:?[[1]](http://www.pythondoc.com/pythontutorial3/interactive.html#id7)
~~~
import rlcompleter, readline
readline.parse_and_bind('tab: complete')
~~~
這個操作將?Tab?綁定到完成函數,故按 Tab 鍵兩次會給出建議的完成內容;它查找 Python 命名、當前的局部變量、有效的模塊名。對于類似?string.a?這樣的文件名,它會解析?'.'?相關的表達式,從返回的結果對象中獲取屬性,以提供完成建議。需要注意的是,如果對象的__getattr__()?方法是此表達式的一部分,這可能會執行應用程序定義代碼。
更有用的初始化文件可能是下面這個例子這樣的。要注意一旦創建的名字沒用了,它會刪掉它們;因為初始化文件作為解釋命令與之在同一個命名空間執行,在交互環境中刪除命名帶來了邊際效應。可能你發現了它體貼的保留了一些導入模塊,類似?os?,在解釋器的大多數使用場合中都會用到它們。
~~~
# Add auto-completion and a stored history file of commands to your Python
# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
# bound to the Esc key by default (you can change it - see readline docs).
#
# Store the file in ~/.pystartup, and set an environment variable to point
# to it: "export PYTHONSTARTUP=~/.pystartup" in bash.
import atexit
import os
import readline
import rlcompleter
historyPath = os.path.expanduser("~/.pyhistory")
def save_history(historyPath=historyPath):
import readline
readline.write_history_file(historyPath)
if os.path.exists(historyPath):
readline.read_history_file(historyPath)
atexit.register(save_history)
del os, atexit, readline, rlcompleter, save_history, historyPath
~~~
- Python 入門指南
- 1. 開胃菜
- 2. 使用 Python 解釋器
- 2.1. 調用 Python 解釋器
- 2.2. 解釋器及其環境
- 3. Python 簡介
- 3.1. 將 Python 當做計算器
- 3.2. 編程的第一步
- 4. 深入 Python 流程控制
- 4.1. if 語句
- 4.2. for 語句
- 4.3. range() 函數
- 4.4. break 和 continue 語句, 以及循環中的 else 子句
- 4.5. pass 語句
- 4.6. 定義函數
- 4.7. 深入 Python 函數定義
- 4.8. 插曲:編碼風格
- 5. 數據結構
- 5.1. 關于列表更多的內容
- 5.2. del 語句
- 5.3. 元組和序列
- 5.4. 集合
- 5.5. 字典
- 5.6. 循環技巧
- 5.7. 深入條件控制
- 5.8. 比較序列和其它類型
- 6. 模塊
- 6.1. 深入模塊
- 6.2. 標準模塊
- 6.3. dir() 函數
- 6.4. 包
- 7. 輸入和輸出
- 7.1. 格式化輸出
- 7.2. 文件讀寫
- 8. 錯誤和異常
- 8.1. 語法錯誤
- 8.2. 異常
- 8.3. 異常處理
- 8.4. 拋出異常
- 8.5. 用戶自定義異常
- 8.6. 定義清理行為
- 8.7. 預定義清理行為
- 9. 類
- 9.1. 術語相關
- 9.2. Python 作用域和命名空間
- 9.3. 初識類
- 9.4. 一些說明
- 9.5. 繼承
- 9.6. 私有變量
- 9.7. 補充
- 9.8. 異常也是類
- 9.9. 迭代器
- 9.10. 生成器
- 9.11. 生成器表達式
- 10. Python 標準庫概覽
- 10.1. 操作系統接口
- 10.2. 文件通配符
- 10.3. 命令行參數
- 10.4. 錯誤輸出重定向和程序終止
- 10.5. 字符串正則匹配
- 10.6. 數學
- 10.7. 互聯網訪問
- 10.8. 日期和時間
- 10.9. 數據壓縮
- 10.10. 性能度量
- 10.11. 質量控制
- 10.12. “瑞士軍刀”
- 11. 標準庫瀏覽 – Part II
- 11.1. 輸出格式
- 11.2. 模板
- 11.3. 使用二進制數據記錄布局
- 11.4. 多線程
- 11.5. 日志
- 11.6. 弱引用
- 11.7. 列表工具
- 11.8. 十進制浮點數算法
- 12. 接下來?
- 13. 交互式輸入行編輯歷史回溯
- 13.1. 行編輯
- 13.2. 歷史回溯
- 13.3. 快捷鍵綁定
- 13.4. 其它交互式解釋器
- 14. 浮點數算法:爭議和限制
- 14.1. 表達錯誤
- 15. 附錄
- 15.1. 交互模式