Saya ingin menambahkan *
ke akhir setiap baris di Vim.
Saya mencoba kode tidak berhasil
:%s/\n/*\n/g
Saya ingin menambahkan *
ke akhir setiap baris di Vim.
Saya mencoba kode tidak berhasil
:%s/\n/*\n/g
Jawaban:
:%s/$/\*/g
harus bekerja. Jadi harus :%s/$/*/g
seperti yang ditunjukkan MrWiggles dengan benar.
g
bendera tidak perlu.
Bahkan lebih pendek dari: perintah pencarian:
:%norm A*
Inilah artinya:
% = for every line
norm = type the following commands
A* = append '*' to the end of current line
I*
daripada 0i*
akan menghemat satu keystroke.
:
, ini akan mengisi awal perintah :'<,'>
yang dengannya Anda bisa membuatnya menjadi:'<,'>norm A*
I
sebagai gantinya -:%norm I*
Juga:
:g/$/norm A*
Juga:
gg<Ctrl-v>G$A*<Esc>
g
adalah global
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. Jadi A*
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:
This is the First line.
This is the second.
The third.
Untuk menyisipkan "Halo dunia." (spasi + papan klip) di akhir setiap baris ini:
Hasilnya adalah:
This is the First line. Hello world.
This is the second. Hello world.
The third. Hello world.
(contoh dari Vim.Wikia.com )
jj
satu dapat menekan G
untuk pindah ke baris terakhir. Ini berguna dalam file besar, di mana menekan j
sampai Anda menekan baris terakhir tidak praktis.
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:
:20,30s/^/HelloWorld/
Anda tidak benar-benar membutuhkannya g
di akhir. Jadi itu menjadi:
:%s/$/*
Atau jika Anda hanya menginginkannya *
di akhir, ucapkan baris 14-18:
:14,18s/$/*
atau
:14,18norm A*
... dan untuk menambahkan (menambahkan awal) setiap baris dengan *,
%s/^/*/g
Salah satu opsi adalah:
:g/$/s//*
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 .
:% 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.