Bagaimana saya bisa mendapatkan kontrol + panah kiri untuk kembali satu kata di iTerm2?

114

Saya membaca di manual Linux dan saya perhatikan bahwa katanya saya bisa menggunakan kontrol + kiri dan kontrol + kanan untuk bergerak maju dan mundur kata-kata di terminal saat mengedit.

"Menekan Ctrl ditambah tombol panah Kiri atau Kanan bergerak mundur atau meneruskan kata sekaligus, seperti halnya menekan Esc dan kemudian B atau F."

Pada OS X control+leftdan control+rightbiasanya mengontrol ruang. Saya telah menonaktifkannya. Saya juga mencoba menggunakan panel preferensi untuk mengatur pintasan keyboard:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Namun ini tidak berfungsi dan menyebabkan kesalahan ini:

masukkan deskripsi gambar di sini

Juga, jika saya menggunakan ITerm dan menggunakan alt+escapeB atau F, karakter bergerak bolak-balik. Ini terjadi sebelum perubahan konfigurasi saya. Tapi saya benar-benar ingin dapat menggunakan kontrol + tombol panah.

cwd
sumber
Kebetulan, cara yang lebih pelit untuk mencapai ini mungkin hanya dengan memetakan perintah + kiri dan perintah + kanan alih-alih ctrl + kiri dan ctrl + kanan. Saya tidak perlu menonaktifkan sistem apa pun untuk mencapai ini.
Dokter Mohawk

Jawaban:

135

pesta

Tambahkan saja yang berikut ke ~/.inputrc:

"\e[1;5D": backward-word
"\e[1;5C": forward-word

Lihat posting Wiki yang diarsipkan ini untuk penjelasan lebih lanjut. Jika Anda ingin menggunakan altkunci sebagai gantinya untuk pergerakan kata-ke-kata (seperti perilaku OS X default), gunakan:

"\e[1;9D": backward-word
"\e[1;9C": forward-word

zsh

zsh secara default tidak menggunakan readlineperpustakaan dan karenanya tidak akan membaca ~/.inputrc. Untuk mendapatkan fungsionalitas yang sama, Anda bisa menambahkan yang berikut ke Anda ~/.zshrc- ini lagi akan menggunakan altkunci:

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word

Lihat dokumentasi ini untuk lebih lanjut tentang editor baris zsh (zle) bawaan.


Kenapa ini? Anda telah mengatur profil Anda untuk menggunakan default Xterm:

masukkan deskripsi gambar di sini

Inilah sebabnya mengapa Anda harus "menangkap" urutan ini dan memberi tahu readlineapa yang harus dilakukan.


Jika hal di atas masih tidak berfungsi dan Anda menggunakan OS X 10.9 (Maverick) atau sekitar itu, Anda mungkin perlu menonaktifkan pintasan Kontrol Misi global yang mencegah tombol panah Kontrol + dari mencapai iTerm, bahkan jika Kontrol Misi itu sendiri dinonaktifkan. Anda dapat melakukannya dari System Preferences → Keyboard → Shortcuts → Mission Control :

prefab keyboard kontrol misi

slhck
sumber
4
Saya mencoba mengikuti instruksi untuk membuat tombol alt + kiri dan alt + kanan berfungsi. Saya menambahkan dua baris ke file .inputrc saya, tetapi satu-satunya hal yang terjadi ketika saya menekan tombol adalah bahwa "D" atau "C" akan dicetak ke shell. Saya menggunakan iTerm2 dengan shell zsh. Ada ide?
Flo
1
@ Lantai Cobalah menambahkan baris bindkey -e, bindkey '^[[1;9C' forward-worddan sebaliknya bindkey '^[[1;9D' backward-wordke Anda ~/.zshrc. IIRC zsh tidak akan membaca .inputrc- atau setidaknya itu berfungsi untuk saya dengan cara ini.
slhck
2
Tidak bekerja untuk saya dengan ctrl-kiri / kanan + bash, tetapi berfungsi dengan baik jika saya mengaturnya untuk alt-kiri / kanan.
Dalin
3
Menambahkan suntingan tentang pintasan Kontrol Misi yang mencegah semua ini bekerja dengan cara yang paling tidak jelas. Semoga ini menyelamatkan seseorang dari mengalami hal yang sama seperti yang saya lakukan ...
rubyruy
12
Untuk OSX + zsh + iTerm2 + ctrl-kiri / kanan gunakan yang berikut ini:bindkey -e; bindkey '\e\e[C' forward-word; bindkey '\e\e[D' backward-word
Artur Bodera
45

Solusi yang bekerja untuk zsh. Sederhana, lugas, out-of-the-box.

  1. Pergi ke: ⌘, Preferences → Profiles → Keys → Keyboard Behavior

  2. Memuat Preset: Natural Text Editing

Muat Preset "Pengeditan Teks Alami"

Selamat Torturer
sumber
Terima kasih @Senang Torturer, saya percaya itu jawaban terbaik karena saya tidak punya di Terminal.app polos masalah itu jadi saya tidak ingin memodifikasi bash / zsh, hanya ingin bekerja semuanya seperti di Terminal.app.
galuszkak
Ini, ini, ini. Terima kasih banyak atas solusi ini! Saya telah melalui proses menjengkelkan ini dengan setiap Mac yang saya dapatkan. Saya sekarang tahu cara paling sederhana untuk mewujudkan hal ini. Terima kasih!
vernonk
8

Saya memperbaikinya dengan cara ini:

Di menu atas; pergi ke

Profiles 
-> Open profiles... 
-> Edit profiles... (button) 
-> Keys (tab) 
-> Load Preset... (dropdown) 
->  Choose "Natural text editing". Done! :-)
rassom
sumber
semua yang saya miliki di bawah preset itu adalah "Default Pabrik"
MaylorTaylor
7

Saya menggunakan pendekatan yang berbeda. Menggunakan BetterTouchTool saya memprogram pintasan keyboard khusus untuk iTerm2. Ketika saya menekan alt-kiri di iTerm2, ia mengirimkan pintasan keyboard ctrl-kiri dengan tindakan "Kirim pintasan keyboard ke aplikasi tertentu". Aplikasi ini adalah iTerm2. Saya melakukan hal yang sama untuk alt-right dipetakan ke ctrl-right.

Efeknya adalah menekan alt-kiri atau alt-kanan di iTerm mengirimkan ctrl-kiri atau ctrl-kanan langsung ke iTerm2, melewati pintasan lebar sistem yang biasa untuk memindahkan desktop ke kiri atau ke kanan. Seperti ini saya mendapatkan perilaku mac khas di iTerm2, pada sesi terminal lokal, tetapi juga pada sesi SSH jarak jauh dan saya bisa menggunakan standar ctrl-kiri / ctrl-kanan untuk pindah ke desktop yang berbeda. Saya menulisnya di sini:

http://www.callum-macdonald.com/2013/04/17/ctrl-left-and-ctrl-right-on-iterm2/

chmac
sumber
2
BetterTouchTool bukan open source dan bisa melakukan hal-hal yang Anda inginkan. Lelaki itu berkata bahwa dia seorang pelajar tetapi dia bisa juga menjadi agen tiga surat.
evakuasi
7

Sebenarnya, saya menemukan solusi termudah adalah pergi ke pengaturan profil saya (ditemukan di Profil / Tombol), menghapus pintasan profil yang menyinggung (seperti profil menimpa global di iTerm), dalam kasus saya alt + kiri dan alt + kanan dan kemudian global pintasan bekerja dengan sempurna untuk saya!

Juga, jika Anda menggunakan OS X, mungkin yang terbaik adalah tetap menggunakan pintasan lebar sistem, yaitu menggunakan alt + kiri dan alt + kanan sebagai gantinya untuk tujuan ini, memiliki perilaku berbeda di terminal pasti akan menimbulkan rasa sakit pada akhirnya.

Selain itu solusi chmac untuk menggunakan Better Touch Tool adalah cara yang elegan untuk mengubah perilaku kontrol + panah di iterm saja.

tidakayv
sumber
sebenarnya ini adalah solusi terbaik. Ini membingungkan karena kebanyakan dari kita masuk ke Keystab. Sebagai gantinya kita harus pergi ke Profilestab -> Profil (misalnya default) -> kunci.
Paschalis 3-15
Ini jelas merupakan solusi teraman dan termudah.
evakuasi
2

Posting ini mengajarkan ini dan cara pintas lainnya sebagai ⌥ ← Hapus untuk menghapus kata:

http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-shortcuts/

Seralto
sumber
Ini sebenarnya tidak menjawab pertanyaan, yaitu tentang menggunakan <ctrl> <left>
DavidPostill
Yang harus Anda lakukan adalah menggunakan jalan pintas yang sesuai dengan kebutuhan Anda. "<ctrl> <left>" atau apa pun yang Anda inginkan.
Seralto
1
Jadi, silakan kutip bagian-bagian penting dari jawaban dari tautan referensi, karena jawabannya bisa menjadi tidak valid jika halaman yang tertaut berubah.
DavidPostill
1

Anda perlu masuk ke Profilestab dan menghapus pemetaan untuk alt+ leftdan alt+ rightkarena secara default menghasilkan beberapa nilai hex.

Sid
sumber
Ini berhasil untukku!
Philip