Bagaimana cara menduplikasi seluruh baris dalam Vim dengan cara yang mirip dengan Ctrl+ Ddi IntelliJ IDEA / Resharper atau Ctrl+ Alt+ ↑/ ↓di Eclipse ?
Y
adalah P
sewa. :)
Bagaimana cara menduplikasi seluruh baris dalam Vim dengan cara yang mirip dengan Ctrl+ Ddi IntelliJ IDEA / Resharper atau Ctrl+ Alt+ ↑/ ↓di Eclipse ?
Y
adalah P
sewa. :)
Jawaban:
yyatau Yuntuk menyalin baris (mnemonic: y ank )
atau
ddke d elete garis (salinan Vim apa yang Anda dihapus menjadi clipboard-seperti "mendaftar", seperti cut operasi)
kemudian
puntuk p Aste disalin atau dihapus teks setelah baris saat ini
atau
Puntuk p Aste teks disalin atau dihapus sebelum baris saat ini
Y
untuk y$
. (Konsisten dengan D
dan C
; (tetapi tidak kompatibel dengan Vi (tidak ada yang peduli.))) Itu bahkan diusulkan dalam :help Y
.
yj
atau yk
, terutama karena Anda tidak menggandakan pada satu karakter. Plus, yk
adalah versi mundur yang 2yy
tidak dapat dilakukan, dan Anda dapat menempatkan jumlah garis untuk mencapai mundur dalam y9j
atau y2k
, dll. Satu-satunya perbedaan adalah bahwa hitungan Anda harus n-1
untuk total n
garis, tetapi kepala Anda dapat mengetahui bahwa bagaimanapun.
Mode normal: lihat jawaban lain.
Cara Ex :
:t.
akan menduplikasi baris,:t 7
akan menyalinnya setelah baris 7,:,+t0
akan menyalin baris saat ini dan selanjutnya di awal file ( ,+
adalah sinonim untuk kisaran .,.+1
),:1,t$
akan menyalin garis dari awal hingga posisi kursor hingga akhir ( 1,
adalah sinonim untuk rentang 1,.
).Jika Anda perlu memindahkan alih-alih menyalin, gunakan :m
alih-alih :t
.
Ini bisa sangat kuat jika Anda menggabungkannya dengan :g
atau :v
:
:v/foo/m$
akan memindahkan semua baris yang tidak cocok dengan pola "foo" ke akhir file.:+,$g/^\s*class\s\+\i\+/t.
akan menyalin semua baris berikutnya dari formulir class xxx
tepat setelah kursor.Referensi: :help range
, :help :t
, :help :g
, :help :m
dan:help :v
:
dalam mode visual, itu ditransformasikan menjadi '<,'>
sehingga pra-memilih rentang garis seleksi visual yang terbentang. Jadi, dalam mode visual, :t0
akan menyalin garis di awal.
:t.
adalah jawaban tepat untuk pertanyaan itu.
YP
atau Yp
atau yyp
.
Y
biasanya dipetakan kembali ke y$
(yank (copy) sampai akhir baris (dari posisi kursor saat ini, bukan awal baris)) sekalipun. Dengan baris ini di .vimrc
::nnoremap Y y$
yyP
Tidak ada yang lebih sederhana dari ini! Dari mode normal:
yy
kemudian pindah ke baris yang ingin Anda tempelkan di dan
p
yy
akan menarik garis saat ini tanpa menghapusnya
dd
akan menghapus baris saat ini
p
akankah put
sebuah garis diraih oleh salah satu metode sebelumnya
Melakukan hal ini:
Pertama, yymenyalin garis saat ini, dan kemudian pmenempel.
Jika Anda menginginkan cara lain:
"ayy
: Ini akan menyimpan baris dalam buffer a
.
"ap
: Ini akan menempatkan isi buffer a
pada kursor.
Ada banyak variasi dalam hal ini.
"a5yy
: Ini akan menyimpan 5 baris dalam buffer a
.
Lihat " File bantuan Vim untuk lebih banyak kesenangan.
yyp - ingat itu dengan "yippee!"
Beberapa baris dengan angka di antaranya:
y7yp
:.,.+7 copy .+7
: P
Saya suka: Shift+ v(untuk memilih seluruh baris segera dan membiarkan Anda memilih jalur lain jika Anda mau), y, hlm
Anda juga dapat mencoba <Cx> <Cl> yang akan mengulangi baris terakhir dari mode penyisipan dan memberi Anda jendela penyelesaian dengan semua baris. Ini berfungsi hampir seperti <Cp>
Untuk seseorang yang tidak tahu vi, beberapa jawaban dari atas mungkin menyesatkannya dengan frasa seperti "tempel ... setelah / sebelum baris saat ini ".
Ini sebenarnya "tempel ... setelah / sebelum kursor ".
yyatau Yuntuk menyalin garis
atau
dduntuk menghapus garis
kemudian
puntuk menyisipkan teks disalin atau dihapus setelah itu kursor
atau
Puntuk menyisipkan teks disalin atau dihapus sebelum yang kursor
Untuk pengikatan kunci lainnya, Anda dapat mengunjungi situs ini: vi Daftar Binding Kunci Lengkap
1 gotcha: ketika Anda menggunakan "p" untuk meletakkan garis, itu meletakkannya setelah garis kursor Anda aktif, jadi jika Anda ingin menambahkan garis setelah garis yang Anda tarik, jangan gerakkan kursor ke bawah garis sebelum meletakkan baris baru.
Defaultnya adalah yyp, tapi saya sudah menggunakan rebinding ini selama setahun atau lebih dan menyukainya:
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
Aku tahu aku terlambat ke pesta, tapi apalah; Saya memilikinya di .vimrc saya:
nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>
yang :copy
perintah hanya salinan garis yang dipilih atau kisaran (selalu seluruh baris) di bawah nomor baris yang diberikan sebagai argumen.
Dalam mode normal yang dilakukan adalah copy .
menyalin baris ini tepat di bawah baris ini .
Dan dalam mode visual itu berubah menjadi '<,'> copy '>
salinan dari awal seleksi ke akhir seleksi ke baris di bawah akhir seleksi .
Bagi mereka yang mulai belajar vi, berikut adalah pengantar vi yang baik dengan mendaftar perintah berdampingan vi untuk gerakan kursor Windows GUI Editor dan tombol pintas khas. Ini mencantumkan semua perintah dasar termasuk yy(salin baris) dan p(tempel setelah) atau P(tempel sebelumnya).
Jika Anda ingin menduplikasi baris dan menempelkannya langsung di bawah seperti saat ini, seperti di Sublime Ctrl+ Shift+ D, maka Anda dapat menambahkan ini ke .vimrc
file Anda .
nmap <S-C-d> <Esc>Yp
Atau, untuk mode Sisipkan:
imap <S-C-d> <Esc>Ypa
i
sampai akhir untuk memasukkannya kembali rusak undo
, sehingga solusi untuk menduplikasi garis dalam mode menyisipkan tidak sepele seperti yang terlihat.
imap <S-C-d> <Esc>Ypi
mode insert dan nmap <S-C-d> <Esc>Yp
dalam mode normal