Cú pháp tô sáng của cú pháp con


13

Xem xét số lượng lớn các câu hỏi mà bật ra được liên quan đến subshells trong Bash ( "Tại sao không tăng biến của tôi trong này đường ống while readvòng lặp ?"), Tôi chỉ nghĩ nó sẽ rất tốt đẹp để tham khảo một số biên tập viên hoặc dịch vụ nơi mã mà sẽ được thực thi trong các lớp con được định dạng khác với mã được thực thi trong vỏ cha. Nó có thể hữu ích như một thiết bị giáo dục (xem sự khác biệt giữa code | codecode < <(code)ngay lập tức). Cái này có tồn tại không?

Điểm thưởng nếu bất cứ ai thực hiện nó cho jEdit hoặc VIm.

Rõ ràng nó không phải là hoàn hảo (theo kinh nghiệm của tôi, không có cú pháp làm nổi bật), nhưng tôi nghi ngờ những điều như (foo=bar; echo $foo;)command | while read ...không nên quá khó để bắt đầu.


Tôi chắc rằng bạn có thể thêm nó vào vimtô sáng mã.
Kevin

2
@Kevin: Câu hỏi là liệu nó đã tồn tại dưới mọi hình thức chưa. Tất nhiên nó có thể được thêm vào bất kỳ trình soạn thảo nào hỗ trợ hệ thống tô sáng Turing-Complete.
l0b0

1
Trong trường hợp của vòng lặp while, POSIX không chỉ định phần nào của đường ống thực thi trong phần cha mẹ, vì vậy, như một công cụ giảng dạy, phần nổi bật này, nếu nó tồn tại, sẽ dạy mọi người viết các tập lệnh shell không di động :(
James Youngman

@JamesYoungman: Một lý do khác để biến nó thành đặc thù của Bash :)
l0b0

Câu trả lời:


2

Tôi không nghĩ rằng điều này tồn tại. Nó sẽ hữu ích, nhưng khó thực hiện bằng các phương pháp phân tích cú pháp tiêu chuẩn được sử dụng trong các trình soạn thảo. Từ quan điểm phân tích cú pháp, có nhiều từ khóa và ký hiệu đặc biệt sẽ phải được phân tích để xác định một khối mã thuộc về một lớp con.

Nhưng tôi rất vui khi thấy tôi sai và ai đó đã nỗ lực để tạo ra các cấu hình như vậy.


0

Vim của tôi đã làm điều này.

Nó thực sự làm phiền tôi, bởi vì nó khiến cho các bình luận bên trong các lớp con không được áp dụng các điểm nhấn thích hợp.

nhập mô tả hình ảnh ở đây

Đây là bản vá Vim 7.3 874 được biên dịch từ nguồn.


Đôi khi tôi đặt filetype thành zshkhi tôi làm việc trong một mạng con. Điều đó sửa lỗi tô sáng cú pháp.

OMG đó là hoàn hảo. Cảm ơn!! Tôi phải có toàn bộ khối lớn này (có nhiều bình luận) bên trong lớp con để tôi có thể thực hiện set -x; set -ephần đó. Và để nắm bắt tất cả đầu ra đó bao gồm cả stderr vào một bản ghi.
Steven Lu

1
Tôi không thấy bất kỳ định dạng nào trong subshell, có vẻ không hữu ích lắm. Hoặc nó chỉ thiếu từ ảnh chụp màn hình?
l0b0

bộ biến và traptừ khóa được tô sáng ở đó. nó chỉ thất bại trong việc làm nổi bật ý kiến. loại tệp zsh hoạt động mặc dù. Bây giờ, khi phân biệt lớp vỏ phụ với lớp vỏ chính, (mà sau tất cả là những gì bạn muốn tôi đoán), à ....... sử dụng một số ý kiến?
Steven Lu
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.