2010-01-13 12 views
5

Bối cảnh:siêu liên kết biên tập văn bản và văn bản-file-based

Dường như một số soạn thảo văn bản và IDE đang bắt đầu để có được nhiều hơn "trình duyệt như" trong các tính năng của họ. Cụ thể, một tính năng như vậy là khả năng xử lý văn bản thông thường trong bộ đệm văn bản mở dưới dạng siêu liên kết đến một tệp, tài nguyên khác hoặc thậm chí là một lệnh chạy được.

trình này như là một plugin biên tập hoặc vĩ mô

Vì đây có vẻ như là một ý tưởng tốt, tôi đã bắt đầu lập trình một số kịch bản và addons soạn thảo để làm điều này rất loại điều, vì vậy mà người dùng của một văn bản biên tập viên có thể mở hoặc hoạt động trên các liên kết của phong cách sau đây:

href="c:/files/foobar.txt"     (click to open file) 
href="c:/files/foobar.txt" jumpto="34"  (jump to a line number) 
href="c:/files/foobar.txt" find="Lorem"  (jump to 1st line containing word) 
href="find_in_files://c:/files" find="Lorem" (show all matching lines) 
[[find_in_files://find=Lorem;exten=*.htm*]] (alternate syntax option) 
href="redir://c:/files/feebar.txt"   (replace current edit buffer) 
href="run://c:/files/foobar.jpg"    (open in default image editor) 
[[run://c:/files/foobar.jpg;runwith=foo.exe]] (alternate syntax option) 

Câu hỏi:

  1. Có loại công ước mới nổi nào để tạo thành siêu liên kết dựa trên văn bản không?
  2. Nếu có một quy ước cho loại điều này, có thông số được công bố không?
  3. Có triển khai ý tưởng này trong trình soạn thảo/IDE yêu thích của bạn không?
  4. Có cách tiếp cận nào tồn tại thay thế cho ý tưởng này không sử dụng siêu liên kết không?
  5. Tính năng này được xử lý như thế nào trong các trình chỉnh sửa "grand-daddy"? (Vim, Emacs)

Cập nhật:

Dường như câu hỏi có thể đã được làm rõ, nhưng nó chỉ ra rằng chế độ Emacs Org là một ví dụ cụ thể về những gì tôi đang tìm kiếm cho rằng câu trả lời tất cả các câu hỏi của tôi.

+0

@Roger Pate @Matt: Cảm ơn câu trả lời của bạn. Tôi không đồng ý với vấn đề "vấn đề không tồn tại" mặc dù. Có lẽ tôi nên nói "ngôn ngữ đánh dấu nhẹ" thay vì "văn bản thuần túy" (mặc dù người ta cũng có thể dễ dàng giải thích về điều đó). Có một tỷ Công cụ Wiki khác nhau với các cú pháp riêng của chúng, một số trong số chúng tuân theo các tiêu chuẩn được xuất bản. Không có lý do chung để giả định những gì tôi hỏi ở đây không thể giống nhau. – dreftymac

Trả lời

5

Chế độ Org 'Org-Mode có hỗ trợ tất cả các loại Hyperlinks.

+0

Cảm ơn, đã chấp nhận câu trả lời vì điều này thực sự đưa ra một ví dụ cụ thể về những gì tôi đang đề cập đến trong một trình soạn thảo văn bản trong thế giới thực. – dreftymac

+1

+1 để đề cập đến một chế độ tuyệt vời mà tôi đã thấy không có bản sao ở bất kỳ đâu. –

3
  1. URL, chẳng hạn như http://example.com/ (thông báo SO tự động liên kết) và đôi khi là "www". tiền tố, chỉ vì nó rất phổ biến. Địa chỉ email là một ví dụ khác thường được công nhận.
    • Nhưng không phải công cụ thuộc tính quasi-xml-thuộc tính này.
  2. Tất nhiên là không; một khi bạn cố gắng và làm cho văn bản thuần tuý tuân theo một số quy ước, bạn không còn có văn bản thuần túy nữa.
  3. Có, xem # 5.
  4. Có, xem # 5.
  5. Nó cực kỳ phổ biến cho các biên tập viên, đặc biệt là các biên tập viên của lập trình viên, có kịch bản, macro, công cụ hoặc bất kỳ thứ gì họ muốn gọi. Thông thường chúng không được kiểm soát trực tiếp bởi văn bản trong tệp, nhưng có thể sử dụng tệp, tên tệp, lựa chọn, vị trí con trỏ, thư mục của tệp hiện tại, v.v. Tôi mong đợi nhiều lập trình viên giỏi sử dụng các tính năng này mà không cần nghĩ đến chúng nữa.

Có vẻ như bạn đang cố giải quyết sự cố không tồn tại.

+0

@Roger Pate ** // Tất nhiên là không; khi bạn cố gắng và làm cho văn bản thuần tuý tuân theo một số quy ước, bạn không còn có văn bản thuần túy // ** Không chắc chắn điều này đang đề cập đến. Nếu điều này có nghĩa là "văn bản thuần" là từ sai cho "văn bản được định dạng", thì chúng tôi có thể tái hiện lại với sự hiểu biết lẫn nhau rằng từ sai này có thể được thay thế bằng "có khả năng được sửa đổi trong trình chỉnh sửa văn bản chuẩn". XML, YAML và JSON là những ví dụ về ý nghĩa của OP. – dreftymac

+0

@Roger Pate ** // có vẻ như bạn đang cố gắng giải quyết vấn đề không tồn tại // ** Không thực sự, chỉ cần nghiên cứu một tính năng có thể đã tồn tại. Nó không phải là một vấn đề, đặc biệt là đối với những người không cần hoặc sử dụng một tính năng như vậy. – dreftymac

2

Chắc chắn jumpto="34"find="Lorem" có thể được thay thế bằng kiểu trình duyệt web #? nhãn hiệu.

Vì vậy, ví dụ thứ hai và thứ ba của bạn sẽ trông giống như sau:

href="c:/files/foobar.txt#34"  (jump to a line number) 
href="c:/files/foobar.txt?Lorem" (jump to 1st line containing word) 

Mặc dù, như Roger Pate nói ở trên, nó âm thanh như bạn đang giải quyết một vấn đề mà không tồn tại.

+2

Chào mừng bạn đến với SO! Cố gắng tránh "ở trên" hoặc "bên dưới" vì thứ tự sẽ thay đổi tùy thuộc vào cách trang được xem (cũ nhất, mới nhất, phiếu bầu), tùy thuộc vào tổng số phiếu bầu hiện tại và tùy thuộc vào câu trả lời cuối cùng được chấp nhận. –

3

Có một số tập lệnh cho Vim thêm siêu liên kết và đánh dấu. Một trong những phổ biến nhất là Viki.

1

Emacs cũng có "tìm-file-at-point", mà bạn có thể gọi với M-x ffap

1

Xem thêm LinkD. Không có gì lạ mắt như Org. Đơn giản, nhỏ.