Câu trả lời:
Trong trường hợp ai đó đang lang thang ở đây gần đây, IPython 5.0 đã chuyển từ readline sang prompt_toolkit , vì vậy câu trả lời cập nhật cho câu hỏi này là chuyển một tùy chọn:
$ ipython --TerminalInteractiveShell.editing_mode=vi
... hoặc để đặt nó trên toàn cục trong cấu hình hồ sơ ( ~/.ipython/profile_default/ipython_config.py
; tạo nó bằng ipython profile create
nếu bạn không có) với:
c.TerminalInteractiveShell.editing_mode = 'vi'
Có vẻ như một giải pháp phù hợp với nhiều ứng dụng tương thích với dòng đọc khác:
Đặt những điều sau trong ~/.inputrc
tệp của bạn :
set editing-mode vi
set keymap vi
set convert-meta on
set convert-meta on
. Nó xung đột với mục nhập unicode, vì vậy nếu bạn dán hoặc nhập unicode, bạn có thể kích hoạt các sự kiện khác nhau, điều này có thể gây ngạc nhiên. Ví dụ, hãy thử gõ ü, và bạn sẽ thấy một kết quả thú vị.
set keymap vi
những thay đổi mà sơ đồ bàn phím (tức là chế độ) các lệnh sau sẽ ảnh hưởng và set convert-meta on
thay đổi cách một số phím hoạt động . Tôi không chắc liệu bạn có cần chúng hay không.
set convert-meta on
(và bất kỳ thứ gì bên dưới dòng đó) sẽ chỉ áp dụng cho chế độ lệnh, không phải chế độ chèn.
Bạn cũng có thể tương tác chuyển đổi giữa chế độ Vi-mode và chế độ Emacs. Theo tài liệu dòng đọc để chuyển đổi giữa chúng, bạn được cho là có thể sử dụng tổ hợp phím MCj nhưng điều đó dường như chỉ cho phép tôi chuyển sang chế độ vi - trên máy Mac của tôi (trong đó ESC được sử dụng làm phím 'Meta' ) nó là: ESC+ CTRL+ j. Để chuyển về chế độ Emacs, người ta có thể sử dụng Ce nhưng điều đó dường như không hiệu quả với tôi - thay vào đó tôi phải làm MCe - trên máy Mac của tôi, đó là: ESC+ CTRL+ e.
FYI my ~ / .inputrc được thiết lập như sau:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipython
sử dụng thư viện dòng đọc và điều này có thể định cấu hình bằng cách sử dụng ~/.inputrc
tệp. Bạn có thể thêm
set editing-mode vi
vào tệp đó để làm cho tất cả các readline
ứng dụng dựa trên sử dụng liên kết khóa kiểu vi thay vì Emac.
ipython
đã chuyển từ readline
thư viện python được gọi prompt_toolkit
vào 5.0.0
để điều này không còn hoạt động.
Bạn có thể đặt vi trong tệp cấu hình khởi động .ipython của mình. Tạo một tệp nếu bạn chưa có bằng cách thêm tệp vào ~/.ipython/profile_default/startup/
tên giống như vậy start.py
. Đây là một ví dụ:
# Initializing script for ipython in ~/.ipython/profile_default/startup/
from IPython import get_ipython
ipython = get_ipython()
# If in ipython, set vi and load autoreload extension
if 'ipython' in globals():
ipython.editing_mode = 'vi'
ipython.magic('load_ext autoreload')
ipython.magic('autoreload 2')
from Myapp.models import *
Dòng cuối cùng đó là nếu bạn sử dụng ipython với Django và muốn nhập tất cả các mô hình của mình theo mặc định.