Ini terjadi apakah saya menggunakan ctrl + shift + v atau menempel dari menu klik kanan.
Bagaimana cara menghentikan perilaku ini?
shell
command-line
clipboard
Kehilangan jiwa
sumber
sumber
Jawaban:
Jangan menyalin beberapa baris teks, untuk menempel. Saya hampir dapat menjamin Anda hanya menyalin bagian terakhir dari baris. Jika Anda mengklik tiga kali untuk menyalin baris kode yang Anda tempelkan, Anda mendapatkan baris baru di akhir baris. Jika Anda ingin memastikan, itu benar-benar masalah, maka salin seluruh baris, kecuali untuk huruf / digit terakhir, dan lihat apakah menempelkan itu juga termasuk baris baru.
sumber
Teks yang Anda tempelkan menyertakan baris tambahan. Ketika Anda menempelkan baris baru, shell yang berjalan di terminal melihatnya sebagai menekan Enter, sehingga menjalankan perintah.
Operasi tempel dilakukan oleh emulator terminal; itu mengirimkan teks yang disisipkan ke aplikasi yang berjalan di terminal, dengan cara yang sama seperti itu melewati teks yang diketik oleh pengguna. Lihat Bagaimana cara kerja input keyboard dan output teks? untuk informasi lebih lanjut tentang cara kerja input. Aplikasi (di sini, shell) tidak memiliki cara untuk membedakan antara penekanan tombol dan operasi tempel.
Banyak emulator terminal dewasa ini mendukung pasta yang dikurung . Dalam mode kurung kurung, aplikasi dapat membedakan operasi tempel dari penekanan tombol. Bracketed paste hanya berguna jika aplikasi melakukan sesuatu yang berbeda dengan teks yang disisipkan, jadi itu diaktifkan oleh aplikasi pendukung, itu bukan sesuatu yang dikonfigurasikan oleh pengguna terminal emulator.
Zsh 5.1 (yang keluar beberapa minggu lalu, jadi belum tersedia di sebagian besar distribusi) menambahkan dukungan untuk mode tempel kurung. Saat Anda menempelkan teks, itu hanya disisipkan pada baris perintah, dan Anda dapat mengeditnya sebelum menekan Enteruntuk mengeksekusi baris perintah.
Pengguna oh-my-zsh dapat menggunakan plugin safe-paste bahkan dalam versi zsh sebelumnya.
Hal lain yang dapat Anda lakukan di zsh adalah membuatnya memasukkan pilihan sebagai string, dengan mengutip (dalam bentuk garis miring terbalik sebelum setiap karakter khusus shell seperti spasi putih). Ketik
`xsel`
untuk mendapatkan pemilihan utama (pemilihan mouse otomatis), atau`xsel -b`
untuk mendapatkan konten clipboard (teks disalin dengan Ctrl+ C), lalu tekan Tab.Jika Anda memiliki versi zsh yang lebih lama dan Anda ingin memasukkan konten clipboard tanpa mengutip, Anda dapat menentukan fungsi yang menyisipkan pilihan.
Dengan ini di Anda
.zshrc
, Anda dapat menekan Ctrl+ Alt+ Vuntuk menyisipkan pilihan utama, atau Ctrl+ U Ctrl+ Alt+ Vuntuk memasukkan konten clipboard. Mereka dimasukkan sebelum kursor, tidak berubah kecuali tanpa baris baru. Lihat Bagikan papan klip antara bash dan X11 untuk sesuatu yang serupa di bash.sumber
Jika Anda menggunakan bash sebagai shell, Anda dapat menekan
Ctrl-X Ctrl-E
untuk membuka editor (ditentukan oleh $ VISUAL atau $ EDITOR, mis.vi
Atau mungkinnano
).Anda kemudian dapat menempelkan perintah Anda ke dalam persis seperti yang Anda lakukan jika Anda mengedit file. Mereka akan dieksekusi jika Anda menyimpan dan keluar. Atau dibatalkan jika Anda berhenti tanpa menyimpan.
sumber
Untuk melakukan tempel multi-baris ke prompt perintah, buka tanda kutip tunggal atau ganda sebelum menempel.
$ echo '
paste...
...
'
Kemudian Anda dapat menekan kembali untuk mengulanginya. Saat Anda panah atas, semua baris yang Anda tempelkan akan berada pada satu baris yang dapat diedit.
Ini berfungsi selama tidak ada kutipan tunggal dalam teks yang Anda tempel.
sumber
Di jendela editor teks, gunakan pintasan berikut untuk menyalin teks tanpa \ n (umpan baris):
Di jendela browser, atau hal lain di mana teks tidak dapat diedit gunakan salah satu dari dua teknik:
Tampilan yang benar (tanpa \ n):
ls -al
Bagaimana pilihan yang salah (dengan \ n) terlihat:
sumber