Saya bisa melihat bahwa Ctrl+ left/ rightmelompat ke awal / akhir baris. Bagaimana cara mengubahnya ke Cmd+ left/ right arrow?
Untuk mendapatkan Alt+ left/ right arrowbekerja dengan benar untuk kata melompat ikuti artikel ini .
Saya bisa melihat bahwa Ctrl+ left/ rightmelompat ke awal / akhir baris. Bagaimana cara mengubahnya ke Cmd+ left/ right arrow?
Untuk mendapatkan Alt+ left/ right arrowbekerja dengan benar untuk kata melompat ikuti artikel ini .
Jawaban:
Tambahkan di iTerm2 Tombol Pintasan Profil berikut
FOR ACTION SEND
⌘← "SEND HEX CODE" 0x01
⌘→ "SEND HEX CODE" 0x05
⌥← "SEND ESC SEQ" b
⌥→ "SEND ESC SEQ" f
Berikut ini visual untuk mereka yang membutuhkannya
⌘← "SEND ESC SEQ" OH
untuk Home dan ⌘→ "SEND ESC SEQ" OF
untuk End (itu huruf besar 'bukan nol). Ini mensimulasikan sebenarnya menekan tombol Home dan End, dan dengan demikian akan bekerja dalam bash, vim, dll.
Untuk melompat di antara kata-kata dan mulai / akhir baris di iTerm2 pilih salah satu dari dua solusi di bawah ini.
Jika Anda tidak ingin menggunakan preset "Natural Text Editing" yang disebutkan di atas, Anda dapat memetakan kunci yang Anda butuhkan secara manual:
[+]
ikonnyaPindahkan kursor satu kata ke kiri
0x1b 0x62
Pindahkan kursor satu kata ke kanan
0x1b 0x66
Pindahkan kursor ke awal baris
0x01
Pindahkan kursor ke ujung baris
0x05
Hapus kata
0x1b 0x08
Hapus baris
0x15
Batalkan
0x1f
Jangan lupa untuk menghapus ikatan sebelumnya :
Says send Hex Codes: 0x1b 0x1b 0x5b 0x44
. Akan baik untuk mengetahui kalau-kalau orang tidak ingin menghapus ini.
Saya melihat ada banyak jawaban bagus sudah, tetapi ini harus memberikan yang paling dekat dengan fungsionalitas OSX asli mungkin lebih dari sekedar shell Anda. Saya memverifikasi bahwa ini berfungsi dalam ZSH, Bash, node, python -i, iex dan irb / pry sesi (menggunakan permata rb-readline untuk readline, tetapi harus bekerja untuk semua).
Buka preferensi ITerm ⌘+ ,dan navigasikan ke Profiles
tab ( Keys
tab tersebut dapat digunakan, tetapi menambahkan pengikat tombol ke profil Anda memungkinkan Anda untuk menyimpan profil Anda dan menyinkronkannya ke beberapa komputer) dan keys
sub-tab dan masukkan yang berikut ini:
Hapus semua karakter yang tersisa dari kursor
⌘+ ←DeleteKirim Kode Hex:
0x15
Lebih kompatibel, tetapi fungsionalitas kadang-kadang adalah untuk menghapus seluruh baris daripada hanya karakter di sebelah kiri kursor. Saya pribadi menggunakan ini dan kemudian menimpa zsh bindkey saya untuk^U
menghapus hanya hal-hal di sebelah kiri kursor (lihat di bawah).atau
0x18 0x7f
Kurang kompatibel, tidak bekerja di simpul dan tidak akan bekerja di zsh secara default, lihat di bawah untuk memperbaiki zsh (bash / irb / pry harus baik-baik saja), melakukan fungsi yang diinginkan ketika itu bekerja.
Hapus semua karakter di kanan kursor
⌘+ fn+ ←Deleteatau ⌘+ Delete→Kirim Kode Hex:
0x0b
Hapus satu kata di sebelah kiri kursor
⌥+ ←DeleteKirim Kode Hex:
0x1b 0x08
Istirahat di Ix Elixir, tampaknya berfungsi dengan baik di tempat lainatau
0x17
Berfungsi di mana-mana, tetapi tidak berhenti pada pemutusan kata normal di IRB dan sebagai gantinya akan menghapus sampai ia melihat ruang literal.
Hapus satu kata di kanan kursor
⌥+ fn←Deleteatau ⌥+ Delete→Kirim Kode Hex:
0x1b 0x64
Pindahkan kursor ke garis depan
⌘+ ←Kirim Kode Hex:
0x01
Pindahkan kursor ke ujung garis
⌘+ →Kirim Kode Hex:
0x05
Pindahkan kursor satu kata ke kiri
⌥+ ←Kirim Kode Hex:
0x1b 0x62
Pindahkan kursor satu kata ke kanan
⌥+ →Kirim Kode Hex:
0x1b 0x66
Batalkan
⌘+ zKirim Kode Hex:
0x1f
Mengulang biasanya tidak terikat dalam bash, zsh atau readline, jadi kita dapat mengaturnya ke hexcode yang tidak terpakai yang kemudian dapat kita perbaiki di zsh
⇧+ ⌘+ Zatau ⌘+ yKirim Kode Hex:
0x18 0x1f
Sekarang bagaimana cara memperbaiki yang tidak berfungsi
Untuk zsh, Anda dapat mengatur ikatan untuk ⌘+ yang belum berfungsi ←Deletedan ⇧+ ⌘+ Z/ ⌘+ ydengan menjalankan:
# changes hex 0x15 to delete everything to the left of the cursor,
# rather than the whole line
$ echo 'bindkey "^U" backward-kill-line' >> ~/.zshrc
# binds hex 0x18 0x7f with deleting everything to the left of the cursor
$ echo 'bindkey "^X\\x7f" backward-kill-line' >> ~/.zshrc
# adds redo
$ echo 'bindkey "^X^_" redo' >> ~/.zshrc
# reload your .zshrc for changes to take effect
$ source ~/.zshrc
Saya tidak dapat menemukan solusi untuk menambahkan pengulangan di bash atau readline, jadi jika ada yang tahu solusi untuk salah satu dari itu, silakan komentar di bawah ini dan saya akan mencoba menambahkannya.
Bagi siapa pun yang mencari tabel pencarian tentang cara mengubah urutan kunci ke hex, saya menemukan tabel ini sangat membantu.
$
di depan echo
(hapus saja?). Selain itu, itu sempurna. Terima kasih.
bindkey | grep "\^\[b"
dan itu akan memberi tahu Anda jika ada sesuatu yang menimpa setelah ditetapkan. Ini harus hanya kembali #=> "^[b" backward-word
. Jika ditimpa, Anda harus menemukan di mana ditimpa dan menghapusnya. Jika itu tidak memungkinkan, Anda dapat menjalankannya echo 'bindkey "^[b" backward-word' >> ~/.zshrc
dan akan menambahkannya ke baris terakhir Anda .zshrc
, kemudian restart iTerm dan itu akan berfungsi
keys
tab di preferensi iTerm untuk melihat apakah itu juga memetakan ⌥
+ ←
ke sesuatu. Jika demikian hapus. Anda dapat menguji apakah Anda b
bekerja dengan benar dengan menekan dengan cepat esc
melepaskan, lalu menekan b
. Seharusnya melompat satu kata ke kiri. Atau, Anda dapat memetakan ⌥
+ ←
ke hex 0x1b 0x42
atau 0x1b 0x5b 0x31 0x3b 0x35 0x44
. Saya memverifikasi bahwa keduanya berfungsi untuk saya. Saya benar-benar berpikir Anda telah ⌥
+ ←
ditimpa di iTerm, baik di profile
keys
tab atau keys
tab Anda.
Ikuti tutorial yang Anda sebutkan di atas untuk mengatur preferensi utama Anda di iterm2 .
Di iTerm 3.0.12 Anda dapat beralih ke Natural Text Editing
preset:
ITerm → Preferensi → Profil → Kunci
Peringatan Karena ini adalah preset, ia dapat menimpa kunci yang telah Anda ikat sebelumnya. Jadi lebih baik menyimpan bindings kunci Anda saat ini sebelum menerapkan preset.
Untuk referensi cepat siapa pun yang ingin pergi ke akhir baris atau mulai baris di iTerm2, tautan di atas http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- in-iterm.html mencatat bahwa di iTerm2:
Saya menggunakan jawaban Travis dan saya membuat profil dinamis yang dapat Anda impor berdasarkan instruksinya.
GabLeRoux / iterm2-macos-dynamic-profile
Petunjuk ada di readme dan jauh lebih cepat untuk mengimpor ini daripada menambahkannya secara manual. Saya membuat jawaban ini sesuai permintaan @ gooli karena ini disembunyikan dalam komentar. Semoga Anda menikmati ini 🍻
Hanya untuk membantu siapa pun yang memiliki masalah yang sama tetapi secara khusus menggunakan Zsh shell dengan iTerm 2. Ternyata Zsh tidak membaca /etc/inputrc
dengan benar , sehingga gagal memahami ikatan utama apa pun yang Anda atur melalui preferensi!
Untuk memperbaiki ini, Anda perlu menambahkan beberapa binding kunci ke .zshrc
file Anda , seperti:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
Perhatikan garis miring terbalik pada contoh di atas sebelum "e", artikel tertaut tidak menunjukkannya, jadi tambahkan mereka ke .zshrc
file Anda saat menambahkan binding.
Binding emacs mode lama masih bisa bekerja di terminal iterm2 dan os x:
Preferensi -> Profil -> Tombol (sub tab dalam profil)
Left/Right option <kbd>⌥</kbd> key acts as +Esc
(mirip di os x terminal)Ini harus memungkinkan alt- fdan alt- buntuk memindahkan kata demi kata. (Masih ctrl- adan ctrl- eselalu bekerja seperti biasa)
Jika diatur sebagai meta
binding lama itu akan berfungsi sementara beberapa binding iterm2 tidak tersedia.
Seperti Menjelaskan di sini , Anda dapat melakukannya dengan langkah-langkah sederhana:
Secara default, lompatan kata (opsi + → atau ←) dan penghapusan kata (opsi + spasi mundur) tidak berfungsi. Untuk mengaktifkannya, buka "ITerm → Preferensi → Profil → Kunci → Muat Preset ... → Pengeditan Teks Alami → Boom! Head meledak
bind -p
akan menampilkan daftar kunci lolos yang terikat di shell Anda, yang mungkin membantu memberi Anda lebih banyak ide / istilah pencarian.
bind -p
hanya bekerja di shell Bourne (bash, sh) untuk zsh, csh tcsh, gunakan bindkey
.
dijelaskan di https://aaronaddleman.com/articles/hexcodes-and-iterm/
Anda dapat menggunakan xxd -psd
untuk mendapatkan kode hex kunci.
Bagi saya, kombinasi berikut berfungsi:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |