Saya sering harus menempelkan beberapa hal di baris baru di vim. Yang biasanya saya lakukan adalah:
o<Esc>p
Yang menyisipkan baris baru dan menempatkan saya dalam mode penyisipan, kemudian keluar dari mode penyisipan, dan akhirnya menempel.
Tiga penekanan tombol. Tidak terlalu efisien. Ada ide yang lebih baik?
Jawaban:
Tak lama setelah
:help p
itu tertulis:Sayangnya itu tidak lebih pendek dari solusi Anda saat ini kecuali Anda menggabungkannya dengan beberapa peta keyboard seperti yang disarankan dalam jawaban yang berbeda. Misalnya, Anda dapat memetakannya ke kunci apa saja (bahkan
p
):sumber
:pu[t]
akan meletakkan teks di baris baru setelah baris saat ini,:pu[t]!
akan meletakkan teks di baris baru sebelum baris saat ini. Saya akan mengedit jawaban saya. (Hore untuk:help p
.):nmap p :pu<CR>
Taruh di file .vimrc Anda dan pergilah :)Pilihan:
1) Gunakan
yy
untuk menarik seluruh baris (termasuk karakter akhir baris).p
kemudian akan menempelkan baris pada baris baru setelah yang sekarang danP
( Shift- P) akan menempel di atas baris saat ini.2) Buat pemetaan: maka itu hanya satu atau dua kunci:
3) Versi fungsi dari pemetaan (sebenarnya tidak perlu, tapi hanya untuk kelengkapan):
sumber
Anda dapat menempelkan buffer dalam mode sisipkan menggunakan
<C-R>
diikuti dengan nama buffer yang akan ditempel. Buffer default adalah"
, jadi Anda akan melakukannyaSaya menemukan bahwa saya
<C-R>"
sangat sering menggunakan dan mengikatnya<C-F>
di vimrc saya:sumber
Ini masih menggunakan tiga penekanan tombol, tetapi saya merasa lebih mudah daripada Esc:
o<Alt-p>
Karena Anda berada dalam mode penyisipan setelah menekan o, pengubah Alt akan memungkinkan Anda untuk menggunakan perintah seolah-olah tidak.
sumber
Menggunakan plugin ini: https://github.com/tpope/vim-unimpaired
]p
pasta di baris di bawah ini[p
pasta pada baris di ataskeuntungan:
sumber
tpope/vim-unimpaired
ini untuk bekerja 😉.Secara pribadi saya telah memetakan Enter (CR) seperti ini:
... berdasarkan ini artikel Vim Wikia.
Dengan cara ini saya dapat membuat baris baru langsung dari mode normal, dan menggabungkan ini dengan keinginan untuk menempelkan ke baris baru di bawah ini yang akan saya lakukan:
Anda juga dapat melewati k dalam nmap di atas, tergantung pada fungsionalitas apa yang Anda sukai dari Enter , jadi itu akan terjadi
<CR>p
.Saya juga telah memasang jj ke Esc , yang juga akan membantu dalam kasus ini. Esc terlalu jauh dari barisan tuan rumah untuk seberapa signifikan itu di vim.
Tidak lebih pendek dari solusi lainnya, tapi menurut saya ini terasa kurang kikuk daripada beberapa solusi lainnya, dan memiliki kegunaan lain juga.
sumber
Jika Anda menyalin seluruh baris lalu menempelkan seluruh baris, gunakan
Y
untuk menarik baris atau beberapa baris, termasuk baris baru, di tempat pertama, danp
untuk menempel. Anda juga dapat menggunakanV
, yaitu mode garis visual , berbeda denganv
mode biasa untuk visual.sumber
Saya memiliki pemetaan
inoremap jj <ESC>
. Sehingga mudah untuk menyisipkan baris baru denganojj
danOjj
kemudianp
.jadi
ojjp
tempel baris baru. itu memiliki satu pukulan lagio<esc>p
tetapiojjp
mudah bagi saya.sumber
Saya menemukan solusi elegan untuk ini. Jika Anda meletakkan register yank di clipboard OS Anda (yang memang bagus), dengan
daripada yang bisa Anda lakukan
o<Ctl-v>
.Selain menjadi lebih sedikit pukulan, ini meningkatkan baik
o<Esc>p
dan:pu
karena mempertahankan indentasi: kedua opsi lain memulai Anda dari karakter nol pada baris baru.Peringatan adalah bahwa ini mungkin atau mungkin tidak bergantung pada OS. Yang saya tahu adalah ini berfungsi pada versi terbaru OS X, tetapi papan klip hanyalah salah satu dari banyak cara untuk menarik papan klip OS.
sumber
Jika Anda juga ingin mengakhiri mode sisip, dimungkinkan untuk menempelkan saat dalam mode sisip menggunakan
CTRL-R "
. https://stackoverflow.com/a/2861909/461834Masih tiga kali penekanan tombol, tetapi tidak ada jalan keluar, dan Anda menyimpan satu tombol jika Anda ingin mengakhiri penyisipan.
sumber
Saya menggunakan pemetaan berikut di konfigurasi Neovim saya:
Sedikit penjelasan:
m`
: setel tanda di posisi kursor saat ini.o<Esc>p
: buat baris baru di bawah dan tempel teks di baris iniO<Esc>P
: buat baris baru di atas dan tempel teks di baris ini``
: letakkan kursor di posisi semulaLihat
:h mark
untuk informasi lebih lanjut tentang merek di Vim.sumber
Jika Anda ingin tetap dalam mode penyisipan, Anda bisa melakukannya
o ctrl+o p
o
- masukkan mode dan pergi ke baris baructrl+o
- jalankan satu perintah seperti dalam mode normalp
- tempelIni tiga penekanan tombol tetapi Anda tetap dalam mode penyisipan dan juga
o ctrl+o
cukup cepat jadi saya pribadi memperlakukannya sebagai 2,5 penekanan tombol.sumber
Solusi ini tampaknya hanya berlaku ketika blok teks yang disalin dimulai pada baris baru (sebagai lawan mengambil potongan teks di suatu tempat dalam baris), tetapi Anda selalu dapat memulai salinan Anda pada karakter terakhir yang ingin Anda ambil, lalu navigasikan ke karakter terakhir di akhir baris sebelum dimulainya blok salinan yang Anda inginkan. Kemudian ketika Anda ingin menempelkannya, letakkan kursor di akhir baris di mana Anda ingin teks Anda ditempelkan dan tekan p. Jika saya belum mengacaukan penjelasannya, ini akan memberikan efek yang Anda cari.
sumber
Jika Anda ingin menempelkan
new line
dan masih mempertahankan indentasi, buat pemetaan ini:nnoremap <leader>p oq<BS><Esc>p
Prasyarat: Anda memiliki pemimpin yang dipetakan dan ada
set autoindent
di.vimrc
.Penjelasan: baris baru dibuat dengan 'o', 'q' diketik dan kemudian diberi spasi mundur (untuk menjaga indentasi), dan 'esc' membawa Anda kembali ke mode normal di mana Anda akhirnya menempel.
sumber