Saya ingin menggunakan perl ekspresi reguler pada baris perintah vim. Misalnya, untuk menggunakan huruf besar pada kata pada baris saat ini, Anda dapat mengetik:
:s/(\w+)/\u$1/g
Saya ingin menggunakan perl ekspresi reguler pada baris perintah vim. Misalnya, untuk menggunakan huruf besar pada kata pada baris saat ini, Anda dapat mengetik:
:s/(\w+)/\u$1/g
Jawaban:
Anda dapat memfilter setiap baris atau rentang garis melalui perintah eksternal di vim, menggunakan! Misalnya, Anda dapat melakukan:
:.!perl -pe "s/(\w+)/\u\1/g"
yang akan menyaring garis saat ini melalui perintah perl. (Di sini :
untuk masuk ke mode baris perintah, dan .
yang berikut berarti baris saat ini; Anda juga dapat menentukan rentang garis atau %
untuk seluruh file, dll.)
Jika Anda ingin menggunakan vim yang dibangun dalam pola substitusi, yang terdekat Anda akan datang adalah menggunakan opsi "sangat ajaib" vim, \ v, seperti:
:s/\v(\w+)/\u\1/g
lihat :help pattern
dan :help substitute
untuk lebih jelasnya. Saya tidak berpikir "sangat ajaib" cukup identik dengan pola perl, tetapi sangat dekat. Bagaimanapun, Anda selalu dapat menggunakan perl itu sendiri jika Anda lebih nyaman dengan itu, seperti di atas.
(
diperlakukan secara khusus sementara {
tidak: "semua karakter ASCII kecuali '0' - '9', 'a' - 'z', 'A' - 'Z' dan '_' memiliki arti khusus. " Terima kasih!
Tidak, Anda tidak dapat menggunakan ekspresi reguler Perl dengan cara itu. Untuk bantuan dalam mempelajari ekuivalen Vim untuk komponen ekspresi reguler Perl, lihat
:help perl-patterns
Namun, Anda dapat menggunakan Perl sebagai filter eksternal seperti yang dijelaskan oleh frabjous. Anda juga dapat menjalankan perintah Perl dalam Vim menggunakan antarmuka Perl, jika Vim Anda dikompilasi dengan +perl
fitur tersebut. Lihat
:help if_perl.txt
:help perl-patterns
telah menyelesaikan satu hal yang sebelumnya saya benci tentang vim
Anda juga bisa menggunakan:
/\v"your regex"
dari pada:
/"your regex"
nnoremap / /\v
dan vnoremap / /\v
.vimrc Anda sehingga saat Anda mengetiknya /
hanya berfungsi.
Ini solusi dari http://vim.wikia.com/wiki/Perl_compatible_regular_expressions
:perldo s/(\w+)/\u$1/g
(Verifikasi dengan :ver
itu +perl
atau +perl/dyn
dikompilasi.)
Gunakan plugin eregex.vim . Ini sangat berguna dan saya tidak punya masalah dengan itu.