Sau khi lệnh `script` đưa ra một tệp, trong vim tôi sử dụng`: set isprint = 1-225` để xóa các ký tự không in được nhưng không thể lưu tệp theo định dạng này


0

Khi trong vim tôi thực thi lệnh này, :set isprint=1-225tất cả các ký tự không in được được cô đọng / loại bỏ. Bây giờ làm thế nào tôi có thể lưu tệp này hoặc chuyển đổi định dạng của tệp này để theo mặc định tệp này mở với định dạng này. Hoặc nếu tôi tải nó lên github, các ký tự không in được cô đọng?

Câu hỏi của tôi đã bị bỏ phiếu trên Stack Overflow vì không liên quan đến lập trình hoặc liên quan đến phát triển, vì vậy tôi nghĩ tôi sẽ thử thêm một số chi tiết ở đây. Tôi không thể phù hợp với tất cả những điều này trong tiêu đề, nhưng về cơ bản tôi có thể tổng hợp các bổ sung của mình với dòng này: Tôi đang sử dụng scriptlệnh để ghi lại phiên của mình, trong khi scriptlệnh đưa ra một tệp có nhiều ký tự 'không in được', tôi có thể ngưng tụ các ký tự không in được trong vim bằng :set isprint=1-225cách nào tôi có thể lưu tệp ở định dạng này?

Các tùy chọn khác mà tôi biết và đã thử là viết hàm perl để xóa ký tự điều khiển (thay thế tốt nhất, mặc dù tôi phải kiểm tra xem liệu tất cả các ký tự không in được đã bị xóa hay chưa) và kết hợp các lệnh dos2unix& col -bptừ nhắc nhở bash.

Điều này có vẻ đầy hứa hẹn, nhưng trước khi tôi có thể dùng thử, tôi đã thấy rằng trong các bản tải xuống cho Ubuntu, nó đã lỗi thời - tôi có nên thử cài đặt nó với .tar.bz2tệp không?

PS Trong bài viết SO này Câu trả lời của Kyle Barbour khiến tôi nghĩ rằng có một cách để sử dụng trtiện ích để làm những gì set: isprint=1-225đang làm từ dòng lệnh vim.


1
Mục tiêu tổng thể của bạn là gì? (Xem thêm "Vấn đề XY".) Kết quả của việc scriptchứa hàng tấn chuỗi thoát chỉ có ý nghĩa đối với trình giả lập đầu cuối. Ví dụ, không thể in được ESCtheo sau bởi các ký tự có thể in [31mchuyển màu nền trước thành màu đỏ. Thậm chí script, đừng để vimcó bất kỳ manh mối nào mà các chuỗi thoát như vậy kết thúc. Do đó, bằng cách chỉ xóa các ký tự không in được, tệp kết quả sẽ không có ý nghĩa gì. Loại bỏ tất cả các chuỗi thoát (bao gồm các ký tự có thể in bên trong) có thể có ý nghĩa hơn một chút, nhưng khó hơn đáng kể.
egmont

Câu trả lời:


0

Đặt 'isprint'tùy chọn không sửa đổi tệp, nó chỉ ảnh hưởng đến cách Vim hiển thị tệp. Tuy nhiên, bạn có thể chạy lệnh thay thế sau khi đặt tùy chọn đó:

:%s/[^[:print:]]//g

Sau đó viết tập tin.


cảm ơn, tôi cũng đã thử một biểu thức chính quy khác từ SO và với một số mã tốt đã bị ăn. Và với những gì bạn đã đề xuất các tập tin không được làm sạch như gọn gàng như đó là với các :set isprint=1-225tùy chọn, đặc biệt là một dòng như thế này ^[]0;sher@SINGH-PC: ~^G^[[01;32msher@SINGH-PC^[[00m:^[[01;34m~^[[00m$ sudo^H^[[K^H^[[K^H^[[K^H^[[Kexport DISPLAY=:0^M[sau ]này hay cách khác [. Làm thế nào tôi sẽ tinker với Regex để đạt được điều đó (Tôi muốn tìm hiểu thêm về Regex sử dụng ở đây - là nó perl tôi nhìn thấy? /sLà dành cho phụ nhưng bạn có thể trình bày chi tiết thx..
Sher

[và] là các ký tự có thể in và được bao gồm cụ thể trong isprintphạm vi bạn đặt. Biểu thức thông thường có xu hướng thay đổi từ ngôn ngữ để ngôn ngữ. Dành cho Vim::help pattern.txt
Heptite

0

[GIẢI QUYẾT] Vì tôi đang sử dụng tmux, vì mục đích của tôi, tôi đã giải quyết bằng cách sử dụng lệnh tmux capture-pane -S <# off lines>.

Vì vậy, sau khi tôi chụp I / O từ một phiên có scriptlệnh vào tệp xyz.txt, từ dấu nhắc thiết bị đầu cuối, tôi có thể phát hành cat xyz.txtđể xem tệp mà không có ký tự không in được. Trong tmux, hãy kiểm tra có bao nhiêu dòng trong tệp xyz.txt của tôi với chế độ sao chép. Cuối cùng, từ bộ đệm lệnh tmux đưa ra capther-pane -S <# of lines>lệnh và sau đó lưu nó vào tệp zyx.txt với :save-buffer zyx.txt.

Cảm ơn tất cả.


Tôi nghĩ bạn có thể hiểu nhầm về "các ký tự không in được" là gì. Có vẻ như bạn đang tìm cách để thoát khỏi các chuỗi thoát thay thế.
Heptite
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.