Saat ini di Bash saya gunakan set -o vi
untuk mengaktifkan mode vi di prompt bash saya.
Bagaimana cara melakukannya di ipython?
Catatan: Jika jawaban berlaku untuk semua * nix, saya akan menghapus OS X dari judul :)
Jawaban:
Jika seseorang baru-baru ini berkeliaran di sini, IPython 5.0 beralih dari readline ke prompt_toolkit , jadi jawaban yang diperbarui untuk pertanyaan ini adalah memberikan opsi:
$ ipython --TerminalInteractiveShell.editing_mode=vi
... atau untuk menyetelnya secara global dalam konfigurasi profil ( ~/.ipython/profile_default/ipython_config.py
; buat dengan ipython profile create
jika Anda tidak memilikinya) dengan:
c.TerminalInteractiveShell.editing_mode = 'vi'
Sepertinya solusi berfungsi untuk banyak aplikasi lain yang kompatibel dengan garis baca:
Setel yang berikut di ~/.inputrc
file Anda :
set editing-mode vi
set keymap vi
set convert-meta on
set convert-meta on
. Ini bentrok dengan entri unicode, jadi jika Anda menempel atau mengetik unicode, Anda dapat memicu berbagai peristiwa, yang mungkin mengejutkan. Misalnya, coba ketik ü, dan Anda akan melihat hasil yang menarik.
set keymap vi
perubahan peta kunci mana (yaitu mode) yang akan dipengaruhi oleh perintah berikut , dan set convert-meta on
mengubah perilaku beberapa kunci . Saya tidak yakin apakah Anda membutuhkannya.
set convert-meta on
(dan apa pun di bawah baris itu) hanya akan berlaku untuk mode perintah, bukan mode sisipkan.
Anda juga dapat secara interaktif beralih antara mode Vi dan mode Emacs. Menurut dokumen readline untuk beralih di antara mereka, Anda seharusnya dapat menggunakan kombinasi tombol MCj tetapi itu hanya memungkinkan saya untuk beralih ke mode-vi - di Mac saya (di mana ESC digunakan sebagai tombol 'Meta' ) itu adalah: ESC+ CTRL+ j. Untuk beralih kembali ke mode Emacs, seseorang dapat menggunakan Ce tetapi tampaknya tidak berhasil untuk saya - saya malah harus melakukan MCe - di Mac saya: ESC+ CTRL+ e.
FYI ~ / .inputrc saya diatur sebagai berikut:
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
ipython
menggunakan pustaka readline dan ini dapat dikonfigurasi menggunakan ~/.inputrc
file. Anda dapat menambahkan
set editing-mode vi
ke file tersebut untuk membuat semua readline
aplikasi berbasis menggunakan keybindings gaya vi sebagai ganti Emacs.
ipython
beralih dari readline
perpustakaan python disebut prompt_toolkit
dalam 5.0.0
jadi ini tidak lagi bekerja.
Anda dapat mengatur vi di file konfigurasi start-up .ipython. Buat satu jika Anda tidak memilikinya dengan menambahkan file ke ~/.ipython/profile_default/startup/
bernama sesuatu seperti start.py
. Berikut contohnya:
# 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 *
Baris terakhir itu adalah jika Anda menggunakan ipython dengan Django, dan ingin mengimpor semua model Anda secara default.