2009-12-17 41 views
12

Tôi có ~ 30.000 dòng mã OCaml được thụt lề rõ ràng (bao gồm các tệp mly và mll) và muốn thụt lề chúng. Tôi đã thử googling cho các biến thể của 'ocaml indent' gần nhất tôi có thể nhận được là sử dụng Omlet.vim và thụt lề mã một dòng tại một thời điểm (thông qua C-f trong chế độ chèn). Có cách nào để làm thụt đầu dòng cho tất cả 30000 dòng không?Làm cách nào để thụt lề mã OCaml hiện tại

Trả lời

8

Tôi sử dụng Emacs như biên tập viên của tôi với gói này được cài đặt:

http://caml.inria.fr/pub/docs/u3-ocaml/emacs/index.html

Để thụt mã hiện tại bạn cần để làm nổi bật nó và sau đó sử dụng tổ hợp phím C-M-\

Bạn có thể kịch bản này cho mỗi tập tin khá dễ dàng và tôi thấy thụt đầu dòng khá tốt.

+0

Cảm ơn bạn đã hoạt động. – vbigiani

+1

Bạn có thể làm điều tương tự trong chế độ tuareg với 'M-q'. Không biết làm thế nào nó quy mô đến hàng ngàn dòng mặc dù. –

+0

@ Chris, bạn đã đúng. Tôi đã sử dụng tuareg khi tôi bắt đầu học OCaml và tôi nghĩ nó phổ biến hơn so với gói được lưu trữ trên trang inria. Tôi chỉ thích sử dụng gói mà tôi đã đăng. Nhưng lấy nó bằng một hạt muối vì tôi không phải là người lập trình OCaml được đánh bóng nhất xung quanh;) – chollida

3

Khi tôi muốn tái-indent cả tập tin trong vim, tôi sử dụng trình tự sau đây chính:

ggVG=

Breaking xuống này cho bạn, gg di chuyển con trỏ đến đầu tệp. V chuyển sang chế độ trực quan. G chọn ở cuối tệp. = thụt lề các dòng được chọn.

Điều này sẽ nhanh hơn nhiều so với phương pháp áp dụng dòng thụt đầu dòng, nhưng sẽ sử dụng cùng một quy tắc (cảnh báo: sử dụng Omlet, thụt lề toàn bộ tệp có thể mất một lúc).

1

Bây giờ, người ta có thể sử dụng OCP-indent (OPAM cài đặt OCP-indent) và gọi nó như thế này:

ocp-indent bad-indented-ocaml.ml > well-indented-file.ml 
0

Sử dụng ocp-indent công cụ cho việc này. Dưới đây là ví dụ về quy tắc Makefile, quy tắc này sẽ tự động thụt lề cho bạn ml tệp.

.PHONY: auto-ocp-indent 
auto-ocp-indent: *.ml 
    for mlfile in $^; do ocp-indent -i $$mlfile; done 
Các vấn đề liên quan