Sekedar catatan, alasan utama untuk menggunakan Vi adalah karena Vim tidak diinstal. Jika Anda telah menginstal Vim, mungkin sebaiknya Anda menggunakannya. Sebenarnya tidak ada keuntungan bagi Vi selain itu sudah ada pada setiap instalasi Unix. Cara terbaik untuk mempelajari Vim menurut saya adalah dengan membuka emulator terminal Anda (bukan dari dalam Vim) dan mengetikkannya. vimtutorIni akan membuat Anda lebih cepat ke tempat itu dapat digunakan untuk Anda dalam waktu sekitar 45 menit.
Ben Mordecai
1
+1 @BenMordecai - Saya sudah terbiasa dengan vi (dari yang lama), termasuk kapabilitas sub-shell yang nyaman, tetapi membutuhkan penyegaran. Sedikit bimbingan belajar. Pergi seperti angin. Terima kasih.
Cbhihe
Jawaban:
192
Pertama, pastikan Anda dalam mode edit (tekan i). Kemudian Anda dapat menempel dengan Ctrl+ Shift+ V, jika Anda berada di terminal seperti emulator gnome-terminal(atau pilih "Tempel" dari menu klik kanan).
Anda juga dapat mengetikkan :set pastevim sebelum Anda menempel untuk menonaktifkan indentasi otomatis, dll. Kemudian :set nopastesetelah Anda menempelkan konten.
Periksa juga pertanyaan ini di stackoverflow.com untuk informasi lebih lanjut.
Jika Anda ingin menyalin / menempelkan baris dalam vim(tidak seperti menempelkan konten clipboard), Anda ingin memeriksa perintah yank . Berikut adalah lembar contekan yang mungkin membantu.
Saya pikir jika kursor mouse aktif, Anda tidak dapat menempel menggunakan Ctrl + Shift + V.
Alvin Wong
14
Hanya sebuah catatan, Icase-sensitive. Huruf kecil iadalah cara normal memasuki mode penyisipan. Capital Imembawa kursor ke awal baris dan kemudian memasukkan Anda ke mode insert.
Ben Mordecai
64
Vi (dan Vim) bekerja sangat berbeda dibandingkan dengan editor teks biasa seperti Gedit. Ini juga memiliki kurva belajar yang cukup curam. Jika Anda ingin mempelajari beberapa perintah dasar, mulailah dengan tutorial interaktif ini .
Namun, untuk menjawab pertanyaan Anda. Konten clipboard sistem dapat diakses melalui register plus. Jadi untuk menempelkan sesuatu dari clipboard sistem yang Anda bisa, dari mode Normal, tekan: "+p(Bukan pada saat yang sama, tetapi satu demi satu).
Di Terminal GNOME, pintasan untuk salin dan tempel adalah Ctrl-Shift-C dan Ctrl-Shift-V.
Flimm
1
Saya sudah mencoba menekan pada gilirannya <kbd> "</kbd>, <kbd> + </kbd> dan <kbd> p </kbd>, juga <kbd>" </kbd> dan <kbd> p < / kbd> dan tidak ada yang terjadi. Apa yang saya lakukan salah? Saya vitidak menggunakanvim
user907860
1
Itu jawaban yang tepat. Menggunakan mis. Ctrl-Shift-v hanya akan berfungsi dengan konten yang paling sederhana (jeda baris dan lekukan bisa benar-benar salah jika Anda berada di terminal, dan Anda lupa menggunakannya set :paste).
rsenna
29
Jika Anda ingin menyalin konten tempel dalam file yang sama , gunakan yankdan paste.
Jika Anda ingin menyalin konten tempel di terminal , buka file pertama, tarik teks yang Anda inginkan, lalu buka file kedua Anda dalam vim (mis. :tabnew /path/to/second/file) Dan tekan puntuk menempelkannya.
Jika Anda ingin menyalin konten tempel dari vim ke program eksternal , Anda perlu mengakses clipboard sistem. Saya berasumsi Anda menggunakan Ubuntu. Versi GUI vim selalu memiliki dukungan clipboard, namun, jika Anda ingin menggunakan Vim dari terminal, Anda harus memeriksa dukungan X11-clipboard.
Dari konsol, ketikkan:
$ vim --version | grep xterm
Jika Anda menemukan -xterm_clipboard , Anda memiliki dua opsi:
1) Kompilasi sendiri vim, dengan flag xterm_clipboard menyala
2) Hapus instalan vim, instal gvim (vim-gtk atau vim-gnome) sebagai gantinya. Anda dapat tetap menggunakan non-gui vim dengan memanggil vim dari terminal, seperti yang Anda lakukan sebelumnya. Kali ini ketika Anda memeriksa Anda harus menemukan + xterm_clipborad .
Sekarang, ketika Anda menarik beberapa teks dalam register + di dalam editor vim Anda (misalnya "+ yy), itu juga akan disalin ke clipboard sistem yang dapat Anda ambil dari program eksternal Anda seperti editor gedit, dengan menggunakan Ctrl+ V.
Jika Anda ingin menyalin konten tempel dari program eksternal ke vim , pertama-tama salin teks Anda ke clipboard sistem melalui Ctrl+ C, kemudian dalam mode insert editor vim , klik tombol tengah mouse (biasanya roda) atau tekan Ctrl+ Shift+ Vuntuk menempel.
Ini adalah 4 kondisi penyalinan & rekat dasar yang terkait dengan vim. Saya harap ini membantu.
Apa gunanya: tabnew / path / ke / detik / file? Anda dapat mencapai hal yang sama persis dengan menarik / menyalin / memotong file pertama, membuka file kedua dengan: vi / path / ke / detik / file dan menempelkan (p / P) di dalamnya. Setidaknya dalam kasus saya ... Atau karena saya mengaktifkan fitur + xterm_clipboard vim? Atau ada lebih banyak hal yang bisa tabnew dari itu?
Cbhihe
1
Di Ubuntu vim-gtkmemiliki xterm_clipboarddukungan dan di Fedora xvimmemilikinya.
icc97
18
Saya selalu menggunakan Shift+ Insertketika saya ingin menempelkan teks ke terminal, berfungsi di semua program terminal.
(Yang juga merupakan alasan mengapa saya tidak pernah mendapatkan laptop di mana Anda tidak dapat menekan Inserttanpa menekan tombol sekunder)
Saya pikir huruf kecil i. Apa yang dilakukan huruf besar I?
Flimm
@ Flimm yang sudah dijelaskan dalam komentar oleh Ben Mordecai pada jawaban lain.
sierrasdetandil
Saya sudah mengedit jawaban menjadi huruf kecil i. Huruf besar Imemindahkan kursor ke awal baris sebelum memasuki mode insert, yang tidak diperlukan di sini.
Flimm
6
Instruksi terperinci untuk menyalin / menempelkan baris teks dalam vi menggunakan yankdanput
(gunakan perintah berikut dalam mode perintah vi)
Salin (YANK)
Untuk menyalin satu baris di vi:
Dalam mode perintah, pindahkan kursor ke baris yang perlu disalin dan ketik yyatau ketikY
Untuk menyalin 2 baris di vi:
Dalam mode perintah, pindahkan kursor ke baris pertama yang perlu disalin dan ketik 2yyatau ketik2Y
(juga, sejumlah baris dapat disalin)
Untuk menyalin semua baris dari lokasi saat ini ke akhir file:
Dalam mode perintah, pindahkan kursor ke baris pertama yang perlu disalin dan ketik yG
Untuk menyalin semua teks dari lokasi saat ini ke akhir kata saat ini:
Dalam mode perintah, pindahkan kursor ke lokasi dari mana teks perlu disalin dan ketik yw
Untuk menyalin semua teks dari lokasi saat ini ke akhir baris:
Dalam mode perintah, pindahkan kursor ke lokasi dari mana teks perlu disalin dan ketik y$
Tempel (PUT)
Untuk menempelkan teks di clipboard - setelah lokasi kursor:
Dalam mode perintah, ketik p
Untuk menempelkan teks di clipboard - sebelum lokasi kursor:
Dengan Vim 8+ di Linux atau Mac, Anda sekarang dapat menggunakan pasta asli OS ( ctrl+shift+Vdi Linux, cmd+Vdi Mac). Jangan menekan iuntuk Mode Sisipkan.
Ini akan menempelkan isi clipboard OS Anda, menjaga spasi dan tab tanpa menambahkan autoindenting. Ini setara dengan tua :set paste, i, ctrl+shift+V, esc, :set nopastemetode.
Itulah jawaban yang saya cari. Karena Vim tidak default pada distro gnu / linux, itu perlu diinstal bahkan di ubuntu. Selain itu, tombol Vi turun tidak berfungsi di ubuntu dan tidak ada highlight.
itsnotmyrealname
0
Jika Anda melakukan root : Ctrl+ Shift+V
Jika Anda tidak melakukan root : Pusat klik mouse.
Saya hanya ingin mencatat bahwa menggunakan Vim via Git Bash di Windows, Anda bisa menggunakan patau klik tengah mouse tanpa berada dalam mode insert. Menggunakan Vim melalui Putty , Anda bisa klik kanan. Dan highlighting melakukan penyalinan.
Saya mencatat ini karena saya sampai di sini tidak melihat bahwa ini adalah SE untuk Ubuntu.
Itu tidak bekerja untuk saya di Windows Git Bash. Konsol mana yang Anda gunakan, mintty atau windows cmd?
wisbucky
Saya percaya itu permen.
Tyler Christian
0
Anda dapat menggunakan Ctrl+ Shift+ Vuntuk menempel di terminal versi vim, tetapi untuk versi GUI seperti vim Neovim-Qt, menempelkan teks dari clipboard sistem dengan Ctrl+ Shift+ Vtidak akan berfungsi. Anda harus mengakses clipboard "+atau "*editor vim.
Menambahkan pengikat kunci baru .vimrcakan cukup dengan perintah salin / tempel:
" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
vimtutor
Ini akan membuat Anda lebih cepat ke tempat itu dapat digunakan untuk Anda dalam waktu sekitar 45 menit.Jawaban:
Pertama, pastikan Anda dalam mode edit (tekan i). Kemudian Anda dapat menempel dengan Ctrl+ Shift+ V, jika Anda berada di terminal seperti emulator
gnome-terminal
(atau pilih "Tempel" dari menu klik kanan).Anda juga dapat mengetikkan
:set paste
vim sebelum Anda menempel untuk menonaktifkan indentasi otomatis, dll. Kemudian:set nopaste
setelah Anda menempelkan konten.Periksa juga pertanyaan ini di stackoverflow.com untuk informasi lebih lanjut.
Jika Anda ingin menyalin / menempelkan baris dalam
vim
(tidak seperti menempelkan konten clipboard), Anda ingin memeriksa perintah yank . Berikut adalah lembar contekan yang mungkin membantu.sumber
I
case-sensitive. Huruf kecili
adalah cara normal memasuki mode penyisipan. CapitalI
membawa kursor ke awal baris dan kemudian memasukkan Anda ke mode insert.Vi (dan Vim) bekerja sangat berbeda dibandingkan dengan editor teks biasa seperti Gedit. Ini juga memiliki kurva belajar yang cukup curam. Jika Anda ingin mempelajari beberapa perintah dasar, mulailah dengan tutorial interaktif ini .
Namun, untuk menjawab pertanyaan Anda. Konten clipboard sistem dapat diakses melalui register plus. Jadi untuk menempelkan sesuatu dari clipboard sistem yang Anda bisa, dari mode Normal, tekan: "+p(Bukan pada saat yang sama, tetapi satu demi satu).
sumber
vi
tidak menggunakanvim
set :paste
).Jika Anda ingin menyalin konten tempel dalam file yang sama , gunakan
yank
danpaste
.Jika Anda ingin menyalin konten tempel di terminal , buka file pertama, tarik teks yang Anda inginkan, lalu buka file kedua Anda dalam vim (mis.
:tabnew /path/to/second/file
) Dan tekanp
untuk menempelkannya.Jika Anda ingin menyalin konten tempel dari vim ke program eksternal , Anda perlu mengakses clipboard sistem. Saya berasumsi Anda menggunakan Ubuntu. Versi GUI vim selalu memiliki dukungan clipboard, namun, jika Anda ingin menggunakan Vim dari terminal, Anda harus memeriksa dukungan X11-clipboard.
Dari konsol, ketikkan:
Jika Anda menemukan -xterm_clipboard , Anda memiliki dua opsi:
1) Kompilasi sendiri vim, dengan flag xterm_clipboard menyala
2) Hapus instalan vim, instal gvim (vim-gtk atau vim-gnome) sebagai gantinya. Anda dapat tetap menggunakan non-gui vim dengan memanggil vim dari terminal, seperti yang Anda lakukan sebelumnya. Kali ini ketika Anda memeriksa Anda harus menemukan + xterm_clipborad .
Sekarang, ketika Anda menarik beberapa teks dalam register + di dalam editor vim Anda (misalnya "+ yy), itu juga akan disalin ke clipboard sistem yang dapat Anda ambil dari program eksternal Anda seperti editor gedit, dengan menggunakan Ctrl+ V.
Jika Anda ingin menyalin konten tempel dari program eksternal ke vim , pertama-tama salin teks Anda ke clipboard sistem melalui Ctrl+ C, kemudian dalam mode insert editor vim , klik tombol tengah mouse (biasanya roda) atau tekan Ctrl+ Shift+ Vuntuk menempel.
Ini adalah 4 kondisi penyalinan & rekat dasar yang terkait dengan vim. Saya harap ini membantu.
sumber
vim-gtk
memilikixterm_clipboard
dukungan dan di Fedoraxvim
memilikinya.Saya selalu menggunakan Shift+ Insertketika saya ingin menempelkan teks ke terminal, berfungsi di semua program terminal.
(Yang juga merupakan alasan mengapa saya tidak pernah mendapatkan laptop di mana Anda tidak dapat menekan Inserttanpa menekan tombol sekunder)
sumber
Vi
/Vim
! = terminal;)Ctrl+A
,Ctrl+C
juga?Gunakan tombol tengah mouse untuk menyisipkan teks yang telah Anda sorot di tempat lain.
Ini berguna ketika Anda tidak memiliki akses ke clipboard sistem Anda (misalnya, dalam sesi SSH jarak jauh).
Harus dalam mode edit / sisipkan untuk Vim.
sumber
Setelah Anda masuk vi, tekan
i
untuk masuk ke mode insert, klik kanan ke terminal, klik paste.sumber
i
. Apa yang dilakukan huruf besarI
?i
. Huruf besarI
memindahkan kursor ke awal baris sebelum memasuki mode insert, yang tidak diperlukan di sini.Instruksi terperinci untuk menyalin / menempelkan baris teks dalam vi menggunakan
yank
danput
(gunakan perintah berikut dalam mode perintah vi)
Salin (YANK)
Untuk menyalin satu baris di vi:
yy
atau ketikY
Untuk menyalin 2 baris di vi:
2yy
atau ketik2Y
(juga, sejumlah baris dapat disalin)
Untuk menyalin semua baris dari lokasi saat ini ke akhir file:
yG
Untuk menyalin semua teks dari lokasi saat ini ke akhir kata saat ini:
yw
Untuk menyalin semua teks dari lokasi saat ini ke akhir baris:
y$
Tempel (PUT)
Untuk menempelkan teks di clipboard - setelah lokasi kursor:
p
Untuk menempelkan teks di clipboard - sebelum lokasi kursor:
P
sumber
Saya mempunyai masalah, karena instalasi Vim saya tidak mendukung clipboard :
Saya menginstal vim-gnome (yang mendukung clipboard) dan kemudian memeriksa lagi:
Sekarang saya dapat menyalin dan menempel menggunakan "+ y dan" + p masing-masing.
sumber
Dengan Vim 8+ di Linux atau Mac, Anda sekarang dapat menggunakan pasta asli OS (
ctrl+shift+V
di Linux,cmd+V
di Mac). Jangan menekani
untuk Mode Sisipkan.Ini akan menempelkan isi clipboard OS Anda, menjaga spasi dan tab tanpa menambahkan autoindenting. Ini setara dengan tua
:set paste
,i
,ctrl+shift+V
,esc
,:set nopaste
metode.Anda bahkan tidak perlu menginstal fitur
+clipboard
atau+xterm_clipboard
vim lagi. Fitur ini disebut "braket tempel". Untuk detail lebih lanjut, lihat https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763sumber
Jika Anda melakukan root : Ctrl+ Shift+V
Jika Anda tidak melakukan root : Pusat klik mouse.
sumber
Saya hanya ingin mencatat bahwa menggunakan Vim via Git Bash di Windows, Anda bisa menggunakan
p
atau klik tengah mouse tanpa berada dalam mode insert. Menggunakan Vim melalui Putty , Anda bisa klik kanan. Dan highlighting melakukan penyalinan.Saya mencatat ini karena saya sampai di sini tidak melihat bahwa ini adalah SE untuk Ubuntu.
Perintah bermanfaat lainnya:
sumber
Anda dapat menggunakan Ctrl+ Shift+ Vuntuk menempel di terminal versi vim, tetapi untuk versi GUI seperti vim
Neovim-Qt
, menempelkan teks dari clipboard sistem dengan Ctrl+ Shift+ Vtidak akan berfungsi. Anda harus mengakses clipboard"+
atau"*
editor vim.Menambahkan pengikat kunci baru
.vimrc
akan cukup dengan perintah salin / tempel:sumber