Saya menggunakan tmux dengan tombol vi, dan copy / paste berfungsi dengan baik selama Anda memilih satu baris teks, atau jika Anda hanya memiliki satu jendela. Ketika saya ingin memilih blok teks (beberapa baris, tetapi tidak lebar penuh), maka saya mengalami masalah. Jika saya memiliki beberapa jendela vim dibuka, maka itu akan memilih teks dari semuanya, dan yang saya butuhkan adalah memilih teks hanya dari satu jendela. Yaitu, sama seperti pemilihan visual dalam vim.
Apakah ini mungkin dilakukan?
Jawaban:
Pastikan untuk memeriksa bagian bawah posting ini untuk binding yang diperlukan yang perlu masuk ke file .tmux.conf Anda.
Saya menganggap kunci awalan Anda adalah Ca:
Untuk melakukan pemilihan teks persegi panjang dari (1,1) hingga (2,2) di tmux:
Perhatikan bahwa menekan spacediperlukan untuk pemilihan persegi panjang.
Untuk memilih garis seperti yang biasa Anda lakukan, buka mode salin, dan tekan v, pilih dengan tombol jkhl dan tekan y.
Saya memiliki binding ini di .tmux.conf saya:
Sebelum versi 2.4 (20 April 2017) :
Setelah versi 2.4 :
Adalah penting untuk melepaskan ikatan binding persegi panjang-toggle default:
Kalau tidak, pengikatan 'Cv' baru tidak berfungsi.
Catatan: untuk memiliki satu
.tmux.conf
yang berfungsi lintas versi, lihat pertanyaan ini .sumber
send
dansend-keys
. Saya melihat di superuser.com/questions/196060/selecting-text-in-tmux-copy-modesend-key
digunakan. Apakah tanda kutip juga penting?Anda dapat memilih blok visual seperti dalam tipe-vi
v
sebelum memulai pemilihan. Di halaman manual, ini disebut "Rectangle toggle".sumber
Seperti yang ditunjukkan Lars,
v
sebenarnya melakukan apa yang Anda minta dengan beralih antara mode persegi panjang dan mode pemilihan garis penuh.space
danenter
digunakan masing-masing untuk memulai pilihan baru dan menyalinnya. Masuk ke mode salin menggunakan awalan Anda diikuti[
dan tempel pilihan Anda disalin ke jendela tmux menggunakan]
Ini membingungkan saya juga karena
v
fungsi dalam vim sepertispace
halnya pada tmux, untuk memulai pemilihan.Penerbitan
:list-keys -t vi-copy
di tmux akan menampilkan tabel lengkap perintah dalam mode salin.sumber
Karena tidak ada jawaban lain yang memberikan solusi optimal untuk masalah ini, saya tidak di atas necromancy.
Ada cara agar pemilihan blok berfungsi dengan cara yang sama di Vim, tanpa harus menekan ruang. Hanya Ctrl-V yang sederhana, tertanam dalam memori otot Anda.
Ini membutuhkan pengeditan .tmux.conf Anda (tetapi menggunakan mode-vi sudah melakukannya) dan saya tidak yakin itu berfungsi untuk tmux <2.4.
Tambahkan ini ke .tmux.conf Anda untuk mereplikasi pemilihan Vim dan yank bindings:
Masuk ke mode pemilihan dan arahkan ke tempat Anda ingin memulai pemilihan. Sekarang
v
mulai seleksi reguler (karakter per karakter, bijaksana baris),<C-v>
mulai pemilihan blok danV
(shift-v) memulai pemilihan garis. Terlepas dari jenis seleksi,y
tarik ke tmux paste buffer (atau X clipboard; lihat komentar kode di atas).Sama seperti Vim.
sumber
EDIT: Setelah memeriksa kode sumber, saya sudah menulis ulang jawaban saya sepenuhnya.
Awalnya saya pikir ini tidak mungkin karena saya tidak bisa
v
membuatnya bekerja, tetapi jawaban lain benar tentang menjadi kunci yang benar untuk ini, tetapi tidak jelas bagaimana cara menggunakannya, terutama jika Anda terbiasa vim.Juga, itu tidak akan berhasil bagi saya karena saya
v
terikatbegin-selection
- saya pikir saya pasti telah menyalin ide ini dari tempat lain untuk meniru cara vim untuk memulai pemilihan karakter yang bijaksana, tidak tahu itu akan menyebabkan masalah lebih jauh di jalan dengan blokir pilihan.Setelah saya menghapus ikatan ini (dengan mengomentari baris di saya
.tmux.conf
dan memulai ulang tmux), itu mulai bekerja, tetapi masih agak membingungkan karena sama sekali tidak sama dengan vim.Dengan binding default, itu harus berfungsi sebagai berikut:
setw -g mode-keys vi
di.tmux.conf
.C-a [
untuk memulai mode salinv
Space
untuk memulai seleksiv
lagi untuk mengaktifkan kembali pilihan ke pemilihan karakter atau sebaliknya.Anda tidak perlu mengetik
v
sebelum Anda menekanSpace
. Anda bisa memulai pemilihan karakter-bijaksana denganSpace
pertama dan tekanv
sesudahnya untuk beralih ke mode pemilihan persegi panjang.Ini sangat berbeda dari vim di dalam tmux Anda harus mengetik dua karakter:
Space
danv
untuk masuk ke mode pemilihan persegi panjang. Dalam vim Anda hanya perlu mengetikCtrl-V
.Juga di vim
v
memulai pemilihan karakter-bijaksana, bukan memblokir.Sayangnya, sepertinya tidak ada mode pemilihan garis-bijaksana di tmux (
Shift-v
in vim).EDIT: Sepertinya Tmux versi 2.0 menyediakan mode pemilihan garis-bijaksana dengan
Shift-v
(saya belum mencobanya!)sumber
Shift-v
dalam rilis 2.0 Maret 2015), tentu saja setelah jawaban saya dan lama setelah jawaban asli Anda. Mungkin Anda dan saya berbicara tentang dua hal yang berbeda ketika kita berbicara tentang pemilihan garis. Silakan bandingkan dengan 3 mode pemilihan dalam VIM (denganv
,Shift-v
danCtrl-v
).v
Pilihan saya adalah karakter yang bijaksana. Saya pada versi 1.9a dan tidak memiliki pilihan garis-vim seperti. Jadi, dengan versi 2.0, tiga mode persis yang dimiliki vim juga dimungkinkan di tmux, kan?