Đặt thụt lề cho chức năng shell script


11

Tôi đang cố gắng đặt số lượng khoảng trống cho mỗi lần thụt lề để bắt đầu một chức năng mới trong sh-mode(chế độ phụ bash). Tôi đã thử cài đặt:

'(sh-basic-offset 2)
'(sh-indentation 2)
'(smie-indent-basic 2)

(như trong custom-set-variablestrong .emacs) và một số người khác là tốt, nhưng không ai trong số họ có bất kỳ tác dụng!


Cách đặt biến không thông qua custom-set-variables(đó là thứ được sử dụng nội bộ bởi Tùy chỉnh nhưng không có nghĩa là sử dụng bằng tay). Sử dụng tốt hơn những thứ như (setq sh-basic-offset 2).
Stefan

Câu trả lời:


6

Cài đặt sh-basic-offsetthụt lề yêu cầu là điều cần thiết - nhưng điều tôi không nhận ra là, cũng cần phải đóng và mở lại tất cả các tệp script shell trước khi tùy chỉnh có hiệu lực. Tôi không thể nhớ mình đã từng phải làm điều này trước đây trong emacs.


1
Sau khi thay đổi .emacs, bạn phải thoát emacs và khởi động lại nó, hoặc sử dụng M-x load-fileđể tải lại .emacsNếu bạn muốn tải lại một tệp mà bạn đã mở trong trình chỉnh sửa của mình, bạn có thể nói C-x C-v RETURNđể "xem lại" nó.
Alex L

@AlexL tải tập tin không hoạt động trong trường hợp cụ thể này. Như tôi đã nói, điều này rất bất thường. Thông thường chỉ cần tùy chỉnh một biến là đủ.
Robin Green

Hmm ... bạn có biết tại sao điều này sẽ là @ robin-green không? Tôi tò mò.
Alex L

1

Tôi đặt offset cơ bản thành 2 nhưng dường như không hoạt động, tôi quay lại nhấn C-h v sh-<TAB>và nhận ra rằng có một biến sh-indentationtôi đặt biến đó thành 2 và mọi thứ dường như hoạt động như một cơ duyên.


Vui lòng làm rõ ý của bạn bằng cách "set-basic-offset" và cũng làm rõ chính xác cách bạn "đặt biến đó thành 2".
Stefan

Các diễn đàn bỏ qua tab vì tôi đặt ở giữa lớn hơn và nhỏ hơn ký tự. Ch v sh- "nhấn tab" tự động hoàn thành sẽ hiển thị cho bạn một danh sách các biến.
Albaro Pereyra

Tôi đã sửa lỗi đánh dấu của bạn, nhưng nhận xét của bạn vẫn không giải thích ý của bạn là "set-basic-offset" cũng như cách bạn "đặt biến đó thành 2".
Stefan

Biến này đã lỗi thời kể từ 26.1, sh-basic-offsetthay vào đó hãy sử dụng .
goetzc

0

Tôi đã có trải nghiệm tương tự như Albaro: cài đặt sh-basic-offset không có hiệu lực, nhưng thiết lập thụt lề làm việc như mong đợi.

Trong trường hợp của tôi, tôi đã đánh giá (setq sh-basic-offset 2)từ với emacs, ví dụ. thông qua biểu thức Mx eval. Tôi đang chạy GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22, modified by Debian. Chế độ chính của tôi là Shell-script.

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.