Apakah ada cara untuk memasukkan ' ' pada kolom yang sama, karena semua baris tidak memiliki panjang yang sama, jadi baris 1 mungkin memiliki ' ' di kolom ke-15, tetapi baris 2 memiliki '*' di kolom ke-25.
Aman Jain
11
hanya ada 1 EOL per baris, jadi gbendera tidak perlu.
doubleDown
Saya ingin menambahkan / ke awal setiap baris: 1, $ s / ^ / \ / g bekerja untuk saya.
farooqsadiq
@ luar biasa Bagaimana saya bisa meneruskan variabel string sebagai argumen untuk perintah ini (Anda tahu, bukan *)?
Matheus Rotta
353
Bahkan lebih pendek dari: perintah pencarian:
:%norm A*
Inilah artinya:
%=for every line
norm = type the following commands
A*= append '*' to the endof current line
Sobat, tidak ada utas vi atau vim dari mana saya tidak belajar sesuatu. Hari ini saya belajar tentang norma. Dan seperti yang mereka katakan di Cheers, "Norm!"
smcameron
4
Untuk prapembuatan, Anda cukup menggunakan 0i *, 0 akan membawa Anda ke awal baris, i untuk mode insert, dan * untuk *. D:
Rob
7
Sebagai VimGolfer saya tidak bisa membantu tetapi menambahkan bahwa menggunakan I*daripada 0i*akan menghemat satu keystroke.
Jedidiah Hurt
24
Satu tip lainnya: Ini juga berfungsi untuk rentang. Cukup sorot garis-garis dalam mode visual dan tekan :, ini akan mengisi awal perintah :'<,'>yang dengannya Anda bisa membuatnya menjadi:'<,'>norm A*
Jedidiah Hurt
8
Untuk mengawali, gunakan Isebagai gantinya -:%norm I*
Ahhh ... Yang kedua bisa digunakan dengan pilihan garis juga. Bagus!
Tim Fletcher
Bisakah Anda jelaskan contoh pertama?
Polling Cody
@CodyPoll gadalah globalperintah yang melakukan sesuatu pada setiap baris yang cocok. $cocok dengan setiap baris. Bisa juga ^atau .*. norma menjalankan perintah yang biasanya Anda gunakan dalam mode perintah. Jadi A*berarti menambahkan *ke akhir baris.
defhlt
41
Saya pikir menggunakan mode blok visual adalah metode yang lebih baik dan lebih fleksibel untuk menangani hal semacam ini. Ini sebuah contoh:
Thisis the First line.Thisis the second.The third.
Untuk menyisipkan "Halo dunia." (spasi + papan klip) di akhir setiap baris ini:
Pada karakter di baris pertama, tekan Ctrl-V (atau Ctrl-Q jika Ctrl-V di-paste).
Tekan jj untuk memperpanjang blok visual lebih dari tiga baris.
Tekan $ untuk memperpanjang blok visual ke akhir setiap baris. Tekan A lalu spasi lalu ketikkan Hello world. + lalu Esc.
Hasilnya adalah:
Thisis the First line.Hello world.Thisis the second.Hello world.The third.Hello world.
Alih-alih menekan jjsatu dapat menekan Guntuk pindah ke baris terakhir. Ini berguna dalam file besar, di mana menekan jsampai Anda menekan baris terakhir tidak praktis.
nash
Setuju bahwa blok visual terbersih di sini, lebih dapat diperluas
Peter Dolan
Perhatikan bahwa ini sepertinya tidak bekerja pada semua baris pada awalnya, tetapi setelah Anda menekan Esc, ia akan melanjutkan dan menambahkannya ke semua.
Noumenon
Blok Visual menyebabkan masalah dan kesalahan saat menggunakan vim sebagai ekstensi untuk hal-hal lain, seperti VS Code. Dalam kasus tersebut, pencarian dan penggantian yang diminta pengguna asli adalah opsi yang andal.
Brettins
pastikan Anda menggunakan huruf kapital A, huruf kecil "a" tidak berfungsi.
Jeff Hoye
14
Jika Anda ingin menambahkan Hello world di akhir setiap baris:
:%s/$/HelloWorld/
Jika Anda ingin melakukan ini untuk jumlah baris tertentu, mulai dari 20 hingga 30 gunakan:
:20,30s/$/HelloWorld/
Jika Anda ingin melakukan ini pada awal setiap baris kemudian gunakan:
Ini akan menemukan setiap jangkar ujung baris dan menggantinya dengan *. Saya mengatakan "pengganti" tetapi, pada kenyataannya, ini lebih merupakan tambahan karena jangkar adalah hal yang istimewa daripada karakter biasa. Untuk informasi lebih lanjut, lihat Kekuatan g - Contoh .
Apa maksud s // di regex? Saya tahu perintah yang sama,: g / / / p, (grep). Saya cukup yakin bahwa perintah Anda dekat dengan saya, setidaknya dalam struktur.
Léo Léopold Hertz 준영
1
S adalah pengganti - ia menggantikan ujung jangkar garis dengan tanda bintang (yah, sebenarnya tidak menggantikannya karena itu adalah titik jangkar).
paxdiablo
3
:% s / \ n / * \ r / g
Yang pertama Anda benar di tempat lain, tetapi Vim harus memiliki penanganan baris baru yang berbeda untuk beberapa alasan.
:s///
,\n
sesuai dengan karakter nol. Bagian:help sub-replace-special
ini relevan.Jawaban:
:%s/$/\*/g
harus bekerja. Jadi harus
:%s/$/*/g
seperti yang ditunjukkan MrWiggles dengan benar.sumber
g
bendera tidak perlu.Bahkan lebih pendek dari: perintah pencarian:
Inilah artinya:
sumber
I*
daripada0i*
akan menghemat satu keystroke.:
, ini akan mengisi awal perintah:'<,'>
yang dengannya Anda bisa membuatnya menjadi:'<,'>norm A*
I
sebagai gantinya -:%norm I*
Juga:
Juga:
sumber
g
adalahglobal
perintah yang melakukan sesuatu pada setiap baris yang cocok.$
cocok dengan setiap baris. Bisa juga^
atau.*
. norma menjalankan perintah yang biasanya Anda gunakan dalam mode perintah. JadiA*
berarti menambahkan*
ke akhir baris.Saya pikir menggunakan mode blok visual adalah metode yang lebih baik dan lebih fleksibel untuk menangani hal semacam ini. Ini sebuah contoh:
Untuk menyisipkan "Halo dunia." (spasi + papan klip) di akhir setiap baris ini:
Hasilnya adalah:
(contoh dari Vim.Wikia.com )
sumber
jj
satu dapat menekanG
untuk pindah ke baris terakhir. Ini berguna dalam file besar, di mana menekanj
sampai Anda menekan baris terakhir tidak praktis.Jika Anda ingin menambahkan Hello world di akhir setiap baris:
Jika Anda ingin melakukan ini untuk jumlah baris tertentu, mulai dari 20 hingga 30 gunakan:
Jika Anda ingin melakukan ini pada awal setiap baris kemudian gunakan:
sumber
Anda tidak benar-benar membutuhkannya
g
di akhir. Jadi itu menjadi:Atau jika Anda hanya menginginkannya
*
di akhir, ucapkan baris 14-18:atau
sumber
... dan untuk menambahkan (menambahkan awal) setiap baris dengan *,
sumber
Salah satu opsi adalah:
Ini akan menemukan setiap jangkar ujung baris dan menggantinya dengan
*
. Saya mengatakan "pengganti" tetapi, pada kenyataannya, ini lebih merupakan tambahan karena jangkar adalah hal yang istimewa daripada karakter biasa. Untuk informasi lebih lanjut, lihat Kekuatan g - Contoh .sumber
Yang pertama Anda benar di tempat lain, tetapi Vim harus memiliki penanganan baris baru yang berbeda untuk beberapa alasan.
sumber
ini akan melakukan trik, dan memastikan ruang terkemuka diabaikan.
sumber