Tôi sử dụng "rất kỳ diệu" cho các tìm kiếm regexp (tức là/\ v hoặc% s/\ v) nhưng tôi muốn tôi có thể đặt một số tùy chọn để tôi không phải bao gồm \ v nữa, ở bất kỳ đâu. Có cách nào để làm việc này không?Trong vim, có cách nào để thiết lập "rất kỳ diệu" vĩnh viễn và trên toàn cầu?
Trả lời
Không trực tiếp, tuy nhiên bạn luôn có thể sử dụng một ánh xạ:
:nnoremap//\v
:cnoremap %s/ %s/\v
Thậm chí nếu bạn có thể thiết lập 'rất kỳ diệu' trong cách bạn có thể set nomagic
, bạn thực sự không muốn vì nó sẽ phá vỡ khá nhiều plugin trong sự tồn tại.
Sửa
Xem thêm this page.
EDIT2: Tôi vừa phát hiện ra plugin này, có thể tốt hơn các giải pháp remapping (dường như có một số nhược điểm không thể tránh khỏi; xem bên dưới). Tôi chưa thử nghiệm nó, vì vậy tôi không biết nếu nó hoạt động chính xác như mong muốn.
http://www.vim.org/scripts/script.php?script_id=4849
EDIT3: Tôi đã sử dụng các plugin cho khoảng một năm rưỡi, và tôi thích nó. Nó vẫn can thiệp vào lịch sử tìm kiếm, tuy nhiên (xem dưới đây), và nó cũng phá vỡ incsearch
, vì vậy tôi có sau trong cấu hình Vim của tôi:
" Since I use incsearch:
let g:VeryMagic = 0
nnoremap//\v
nnoremap ? ?\v
vnoremap//\v
vnoremap ? ?\v
" If I type // or ??, I don't EVER want \v, since I'm repeating the previous
" search.
noremap // //
noremap ?? ??
" no-magic searching
noremap /v/ /\V
noremap ?V? ?\V
" Turn on all other features.
let g:VeryMagicSubstituteNormalise = 1
let g:VeryMagicSubstitute = 1
let g:VeryMagicGlobal = 1
let g:VeryMagicVimGrep = 1
let g:VeryMagicSearchArg = 1
let g:VeryMagicFunction = 1
let g:VeryMagicHelpgrep = 1
let g:VeryMagicRange = 1
let g:VeryMagicEscapeBackslashesInSearchArg = 1
let g:SortEditArgs = 1
Tôi đã từng đề nghị Drai của một thời gian, nhưng không tìm thấy nó bực bội trong thực tế vì những hành vi sau đây:
Nếu bạn gõ như sau: /{pattern} :% s // {} thay thế
... sau đó, mà không cần lập bản đồ này, bạn có thể xem những gì bạn nói về để thay thế trước khi bạn thay thế. Nhưng với bản remapping, bạn đột nhiên có s/\v/
thay vì s//
; điều này khớp với số eveything trong tệp, điều này rõ ràng là sai.
May mắn thay, chính lệnh s
có dạng thay thế sử dụng very magic
để tìm kiếm. Vì vậy, đây là những ánh xạ Tôi hiện đang sử dụng trong tôi .vimrc
:
nnoremap//\v
vnoremap//\v
cnoremap %s/ %smagic/
cnoremap >s/ >smagic/
nnoremap :g/ :g/\v
nnoremap :g// :g//
Lưu ý rằng chỉ lập bản đồ s/
dẫn đến các vấn đề khi cố gắng sử dụng một mô hình kết thúc bằng s
; tương tự, ánh xạ g/
sẽ tạo ra sự cố khi sử dụng các mẫu kết thúc bằng g
. Lưu ý rằng ánh xạ :g/
và :g//
ngăn Vim hiển thị lệnh ngay lập tức.
EDIT: Thật không may, có vẻ như không phải là phiên bản "ma thuật" của :global
, đó là lý do tại sao ánh xạ dường như không cần thiết của :g//
được sử dụng để đảm bảo lệnh chung có thể sử dụng mẫu tìm kiếm trước đó.
Một hạn chế khác là các bản sửa lỗi này ảnh hưởng đến lịch sử tìm kiếm. Ví dụ: hãy xem xét sử dụng *
để tìm kiếm lần xuất hiện tiếp theo của từ dưới con trỏ.Điều này làm cho Vim tìm kiếm mẫu \<[word]\>
, trong đó không phải bắt đầu bằng \v
. Nếu không có các sửa đổi được mô tả ở trên, hãy nhập /
và nhấn mũi tên lên sẽ nhớ lại mẫu tìm kiếm đó. Với các thay đổi, tuy nhiên, sau khi nhập /
, bạn phải xóa tự động chèn \v
trước khi nhấn mũi tên lên để gọi lại mẫu đó.
'cnoremap> s /> smagic /' dường như không hoạt động khi tôi chọn phạm vi hình ảnh. Tôi cũng đã cố gắng thoát khỏi khung để 'cnoremap \> s/\> smagic /' nhưng điều đó không hoạt động. –
@DaveKennedy Bạn đã thử plugin chưa? Nó đáng tin cậy hơn nhiều đối với tôi; Tôi đã có rất ít vấn đề với nó. Tôi không còn sử dụng ánh xạ được liệt kê trong khối mã thứ hai nữa. –
- 1. Làm thế nào để kích hoạt chế độ "Rất kỳ diệu" trong vim với vimrc?
- 2. Làm thế nào để thiết lập một biến môi trường vĩnh viễn trong Linux?
- 3. Cuộn vĩnh viễn UITableView
- 4. vĩnh viễn Xóa Thư mục
- 5. Xóa tệp vĩnh viễn và bảo mật trên CentOS
- 6. Làm thế nào để thiết lập dbpath vĩnh viễn cho mongodb
- 7. Biến PowerShell vĩnh viễn
- 8. HttpServletResponse sendRedirect vĩnh viễn
- 9. Vĩnh viễn thay thế một chức năng
- 10. Làm cách nào để tạo lịch sử Bash vĩnh viễn trong FreeBSD?
- 11. Khởi động Máy chủ Kafka Vĩnh viễn
- 12. Có ràng buộc() thay đổi tham chiếu hàm không? | Làm thế nào để thiết lập vĩnh viễn?
- 13. Đặt NSWindow trong suốt vĩnh viễn trên một NSWindow khác
- 14. Vim biến toàn cầu và người lập bản đồ
- 15. Vô hiệu hóa vĩnh viễn AutoEventWireup
- 16. Cách cập nhật vĩnh viễn iptables
- 17. Làm thế nào để thiết lập sys.excepthook để gọi pdb trên toàn cầu trong python?
- 18. Thay đổi CodePage trong CMD vĩnh viễn?
- 19. shared_ptr kỳ diệu :)
- 20. mysql báo cáo chuẩn bị vĩnh viễn
- 21. Có điều gì kỳ diệu về ReadOnlyCollection
- 22. Máy chủ Django vĩnh viễn
- 23. Vô hiệu hóa vĩnh viễn Configuration.ProxyCreationEnabled trong EF?
- 24. ruby trong linux: vĩnh viễn "source .rvm/scripts/rvm"?
- 25. Magento: cách xóa tất cả các chuyển hướng vĩnh viễn
- 26. tăng kích thước heap java vĩnh viễn?
- 27. Xóa Tệp kê khai ứng dụng HTML5, Vĩnh viễn
- 28. `WindowListener` hoạt động, bắn vĩnh viễn
- 29. vĩnh viễn "Không tìm thấy tệp"
- 30. Nơi đặt cookie theo dõi (vĩnh viễn) trong Rails?
Điểm tốt về plugin. Bằng cách nào đó tôi đã không nghĩ về điều này. Cảm ơn bạn đã trả lời. – bgaluszka
Tôi đã thêm một liên kết đến một trang wiki có thể hữu ích cho bạn. – DrAl
+1 Cảm ơn. FWIW, mục đích này có vẻ tổng quát hơn: ': cnoremap s/s/\ v'. – FMc