Tôi có một tệp với một số ký tự không thể in được là^C hoặc^B, tôi muốn tìm và thay thế các ký tự đó, tôi làm cách nào để thực hiện điều đó?Làm cách nào để thay thế hoặc tìm các ký tự không thể in trong regex vim?
Trả lời
Giả sử bạn muốn thay thế^C với C:
:%s/CtrlVC/C/g
đâu CtrlVC nghĩa loại V sau đó C trong khi giữ Ctrl ép.
CtrlV cho phép bạn nhập các ký tự điều khiển.
Bạn có thể sử dụng:
:%s/^C//g
Để có được ^C
giữ phím điều khiển, bấm V
sau đó C
(Cả trong khi giữ phím điều khiển) và ^C
sẽ xuất hiện. Điều này sẽ tìm thấy tất cả các lần xuất hiện và thay thế chúng bằng không có gì.
Để loại bỏ cả hai ^C
và ^B
bạn có thể làm:
:%s/^C\|^B//g
Hãy thử điều này sau khi tiết kiệm tập tin của bạn trong vim (giả sử bạn đang ở trong môi trường Linux)
:%!tr -cd '[:print:]\n'
, hãy giải thích ngày này để lưu ma thuật voodoo! – Prospero
@JamesAndino: ':%' lọc tất cả các dòng bằng cách sử dụng chương trình bên ngoài ('!') 'Tr', mà _removes_ (' -d') tất cả các ký tự _not_ ('-c') _printable_ (' [: print: ] ') hoặc _newline_ (' \ n'). – quasimodo
Đây không phải là Unicode thân thiện, vì nó là một lớp nhân vật POSIX (http://en.wikipedia.org/wiki/Regular_expression#Character_classes). Vì vậy, nếu bạn có YAML với dữ liệu như 你好, 'tr' sẽ tách dữ liệu Unicode khi sử dụng' [: print:] '. – ash
Loại bỏ chỉ là biểu tượng kiểm soát:
:%s/[[:cntrl:]]//g
Loại bỏ các ký tự không in được (loại bỏ các ký tự ASCII cũng):
:%s/[^[:print:]]//g
Ít nhất cho đến khi vim 7.3 [: print:] chỉ khớp với các ký tự in được ASCII (đã chỉnh sửa câu trả lời để cảnh báo cho người đọc về thực tế này) – ndemou
@ndemou Điều này rất khó, với ký tự [] xung quanh [: print:]^khớp và trả lại bất kỳ nội dung nào không thể in được. Hoặc có lẽ đó là chỉnh sửa của bạn? – dragon788
@ dragon788, vâng tôi đã biết cách hoạt động khi tôi viết bình luận của mình. Hãy thử regex thứ hai trên văn bản với các ký tự Unicode có thể in bên ngoài bảng ASCII để hiểu nhận xét của tôi (nó sẽ loại bỏ các ký tự Unicode). – ndemou
Không có câu trả lời nào ở đây sử dụng ký tự điều khiển của Vim phù hợp với tôi. Tôi phải nhập một dãy unicode.
:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g
Đó phạm vi unicode đã được tìm thấy về bài đăng này khác: https://stackoverflow.com/a/8171868/231914
Vì TAB được coi là không thể in nên các [[: cntrl:]] và [^ [: print:]] khớp với TAB (0x9, C-I) – mosh
- 1. Cách tìm thay thế bằng các nhóm regex trong vim
- 2. Cách tìm kiếm và thay thế một ký tự không thể in
- 3. Vim regex thay thế bằng n ký tự
- 4. vim: cách tìm kiếm/thay thế ký tự đặc biệt?
- 5. Làm cách nào để thay thế các ký tự Unicode không in được trong Java?
- 6. Làm cách nào để thay thế các ký tự đặc biệt bằng regex trong javascript?
- 7. Regex để thay thế các ký tự không hợp lệ
- 8. ký tự unexode regex trong vim
- 9. Làm thế nào để loại bỏ các ký tự không thể in/vô hình trong ruby?
- 10. Làm cách nào để phát hiện các ký tự không thể in trong .NET?
- 11. Tìm kiếm tương tác/thay thế regex trong Vim?
- 12. Đánh dấu và thay thế các ký tự unicode không in được trong Emacs
- 13. vim thay thế regex
- 14. RegEx để tìm hai hoặc nhiều ký tự liên tiếp
- 15. regex tìm ký tự giữa ""
- 16. vim thay thế ký tự thành \ n
- 17. Javascript Regex: Làm thế nào để in đậm các từ cụ thể với regex?
- 18. Có cách nào để vim không tính các ký tự đặc biệt làm từ không?
- 19. Regex để tìm ký tự đặc biệt trong Java
- 20. Vim: làm cách nào để trao đổi hai ký tự?
- 21. mẫu tìm thấy trong tìm kiếm vim, nhưng không tìm kiếm và thay thế vim?
- 22. Có thể sử dụng tìm và thay thế trên một chuỗi ký tự đại diện trong VIM không?
- 23. Làm thế nào để thay thế lookahead trong regex?
- 24. Thay thế tất cả các cá thể ký tự giữa các thẻ với vim
- 25. Làm cách nào để sử dụng regex để tìm kiếm bỏ qua các ký tự nhất định bằng NSPredicate?
- 26. Không thể in ký tự tiếng Nga
- 27. Làm thế nào để thay thế chữ in hoa thành chữ thường bằng regex trong Eclipse?
- 28. Làm thế nào để sử dụng regex với các ký tự tùy chọn trong python?
- 29. Làm cách nào để xóa ký tự ETX khỏi phần cuối của chuỗi? (Regex hoặc PHP)
- 30. làm cách nào để thay thế các ký tự đặc biệt bằng các ký tự mà chúng dựa trên PHP?
Bạn cũng có thể sử dụng tổ hợp phím Ctrl-Q. Điều này rất hữu ích cho một số người dùng bản đồ Ctrl-V vào hoạt động clipboard –