Tôi muốn sử dụng các biểu thức chính quy perl trên dòng lệnh vim. Ví dụ: để viết hoa các từ trên dòng hiện tại, bạn có thể nhập:
:s/(\w+)/\u$1/g
Tôi muốn sử dụng các biểu thức chính quy perl trên dòng lệnh vim. Ví dụ: để viết hoa các từ trên dòng hiện tại, bạn có thể nhập:
:s/(\w+)/\u$1/g
Câu trả lời:
Bạn có thể lọc bất kỳ dòng hoặc phạm vi của dòng thông qua một lệnh bên ngoài trong vim, bằng cách sử dụng !. Ví dụ, bạn có thể làm:
:.!perl -pe "s/(\w+)/\u\1/g"
Nó sẽ lọc dòng hiện tại thông qua lệnh perl đó. (Ở đây :
để vào chế độ dòng lệnh và .
theo sau có nghĩa là dòng hiện tại; bạn cũng có thể chỉ định một phạm vi dòng hoặc %
cho toàn bộ tệp, v.v.)
Nếu bạn muốn sử dụng các mẫu thay thế được tích hợp sẵn của vim, cách gần nhất bạn sẽ đến là sử dụng tùy chọn "rất kỳ diệu" của vim, \ v, như vậy:
:s/\v(\w+)/\u\1/g
xem :help pattern
và :help substitute
để biết thêm chi tiết Tôi không nghĩ "rất ma thuật" khá giống với mô hình của perl, nhưng lại rất gần gũi. Dù sao, bạn luôn có thể sử dụng perl nếu bạn cảm thấy thoải mái hơn với nó, như trên.
(
được đối xử đặc biệt trong khi {
không phải là: "tất cả các ký tự ASCII ngoại trừ '0' - '9', 'a' - 'z', 'A' - 'Z' và '_' có một ý nghĩa đặc biệt. " cảm ơn!
Không, bạn không thể sử dụng biểu thức chính quy Perl theo cách đó. Để được trợ giúp trong việc tìm hiểu các tương đương Vim cho các thành phần biểu thức chính quy Perl, xem
:help perl-patterns
Tuy nhiên, bạn có thể sử dụng Perl như một bộ lọc bên ngoài như được giải thích bởi frabjous. Bạn cũng có thể thực thi các lệnh Perl trong Vim bằng giao diện Perl, nếu Vim của bạn được biên dịch với +perl
tính năng này. Xem
:help if_perl.txt
:help perl-patterns
đã giải quyết một điều mà trước đây tôi ghét về vim
Bạn cũng có thể dùng:
/\v"your regex"
thay vì:
/"your regex"
nnoremap / /\v
và vnoremap / /\v
vào .vimrc để khi bạn nhập /
nó chỉ hoạt động.
Đây là một giải pháp từ http://vim.wikia.com/wiki/Perl_compiverse_THER_expressions
:perldo s/(\w+)/\u$1/g
(Xác minh với :ver
điều đó +perl
hoặc +perl/dyn
được biên dịch trong.)
Sử dụng plugin eregex.vim . Nó rất hữu ích và tôi không có vấn đề gì với nó.