2009-10-19 27 views
34

Tôi đang cố chuyển sang Emacs làm trình chỉnh sửa mã nguồn chính của mình. Tôi thực sự nhớ một điều (phổ biến trong các trình biên tập đơn giản hơn nhiều) - các hướng dẫn thụt đầu dòng (các đường thẳng đứng không phô trương thể hiện mức thụt lề). Emacs có thể hiển thị chúng không?Làm thế nào để hiển thị hướng dẫn thụt đầu dòng trong Emacs?

+4

Thật hữu ích khi đọc một số mã. – Thotep

+2

Khi điều đó xảy ra, hướng dẫn thụt đầu dòng sẽ thực sự hữu ích khi chỉnh sửa mã Lisp. –

+0

@ user181548 thông tin khác bằng ít sai sót hơn. trên vim tôi sử dụng 'set listchars = tab: ░ \' (char trước khi "\" là một khối char sẽ không hiển thị ở đây tôi nghĩ, có thể được thay thế bởi "|" và vẫn có vẻ tốt. Sau "\" là một nhân vật không gian) – gcb

Trả lời

69

Tôi đã thực hiện một chức năng highlight-indentation cho mục đích này, code is on github.

Khi gọi highlight-indentation mà không có đối số tiền tố, mức thụt lề hiện tại được ngây thơ đoán từ chế độ chính (python, ruby ​​và ngôn ngữ dựa trên chế độ cc). Chỉ hoạt động đối với thụt lề không gian. Tùy chỉnh highlight-indent-face để thay đổi sự xuất hiện của các dòng thụt đầu dòng.

Ví dụ (ruby, python): Ruby, Python example

Tôi cũng thường xuyên sử dụng đoạn mã này mà gấp tất cả các mã trên cấp độ thụt đầu dòng lớn hơn dòng hiện tại. Đó là một cách tuyệt vời để có cái nhìn tổng quát về phác thảo.

(defun aj-toggle-fold() 
    "Toggle fold all lines larger than indentation on current line" 
    (interactive) 
    (let ((col 1)) 
    (save-excursion 
     (back-to-indentation) 
     (setq col (+ 1 (current-column))) 
     (set-selective-display 
     (if selective-display nil (or col 1)))))) 
(global-set-key [(M C i)] 'aj-toggle-fold) 
+7

Để tự động tải tệp này cho các tệp JavaScript và Python, tôi đã thêm phần sau vào các tệp .emacs của mình:' (yêu cầu 'làm nổi bật thụt đầu dòng) (thêm móc' python-mode-hook ') -mode) (add-hook 'js2-mode-hook' nổi bật-indentation-mode) ' – Tom

+2

Xin chào, tôi đã thêm nó vào .emacs của tôi, nhưng dường như các tệp python của tôi trông giống như trên màn hình. Tôi không thấy bất kỳ dòng giới hạn nào trong ví dụ của bạn. bạn có thể tư vấn không? –

+2

+1 cho chuyển đổi gấp. Lưu ý cho những người khác, nếu bạn bật 'tô sáng-indentation-mode' và không thấy gì cả, có thể vì bạn đang sử dụng * tabs *. – harpo

5

với kiến ​​thức của tôi, không ai đã triển khai hướng dẫn thụt lề cho Emac cho đến thời điểm này. Điều gần nhất bạn có thể nhận được là hiển thị các TAB với gói khoảng trắng, xem Show tabs with a different character (Emacs).

+0

Lưu ý rằng bạn cũng có thể trực quan hóa các không gian: 'M-x tùy biến biến RET khoảng trống-khoảng trắng' sau đó' M-x tùy biến biến RET khoảng trắng kiểu 'và thêm hai mã này vào biểu thức Lisp: 'dấu cách khoảng trắng'. Ví dụ: 'khoảng trắng 'kiểu chữ của tôi trông giống như sau:'' (các tab dấu móc dòng không gian trống trước tab) Dấu cách không gian trống sau dấu tab không gian trống ' –

+0

@NoahSussman' biến tùy chỉnh 'không có biến số nào như vậy oo –

0

Giả sử bạn có thể uốn cong ColumnMarker theo nhu cầu của mình nhưng sẽ đánh dấu một cột không cho bạn một pixel đơn lẻ.

tôi thụt với 8 gian vì vậy tôi chưa bao giờ nghĩ về điều đó; P

Các vấn đề liên quan