Tìm kiếm và thay thế thông qua một dự án đa biến trong AocateeX?


8

Tôi sắp nhận Emacs làm biên tập viên duy nhất tôi sử dụng trong tất cả những gì tôi đang viết bao gồm các tài liệu LaTeX. Tôi đến từ trình soạn thảo WYSIWYG phục vụ mục đích đó khá hay, cụ thể là TexStudio hoặc TXS. Đối với quá trình chuyển đổi từ TXS sang Emacs, tôi vẫn còn thiếu cách TXS xử lý việc thực hiện tìm kiếm truy vấn regrec lớn và thay thế bằng cách làm nổi bật các kết quả khớp và hạn chế tìm kiếm đối với các .textệp liên quan đến dự án . Tôi rất nhớ điều đó trong Emacs bây giờ. Xem ảnh chụp màn hình TXS bên dưới:

Truy vấn TeXStudio trong Dự án LaTeX đa biến nhập mô tả hình ảnh ở đây

Tôi muốn nhấn mạnh những điểm trong quy trình làm việc cần đạt được trong Emacs:

  1. RegExp Truy vấn tìm kiếm và thay thế chỉ trong các .textệp liên quan đến dự án .
  2. Làm nổi bật các trận đấu
  3. Tổng quan về các kết quả được tô sáng cùng nhau trong một bố cục có thể quản lý (tương tự như chế độ xem nhật ký của MagitEmacs khi bạn nhấn ltheo sau bởi một cái khác lhoặc đơn giản như C-x dtrong chế độ Dired
  4. Làm thế nào để biết bao nhiêu thay thế hoặc kiểm tra phù hợp được thực hiện với hoặc còn lại và một cách để tiếp tục truy vấn trong trường hợp nó bị hỏng bởi một tổ hợp phím vụng về dừng truy vấn
  5. Cách thoát khỏi truy vấn lộn xộn này bằng cách đóng và lưu tất cả các tệp liên quan và quay lại trạng thái trước khi gọi truy vấn này

Tôi đọc bài đăng này nhưng ý định của tôi là giống như CWmọi người có thể chia sẻ quy trình làm việc tốt nhất của mình để hoàn thành công việc chung này. Cách tiếp cận hiện tại của tôi như sau:

Quy trình làm việc đầu tiên

  1. Chế độ định hướng % gsẽ đánh dấu tất cả các tệp có chứa biểu thức chính đó. Nhược điểm: điều này sẽ bao gồm cả các tệp thậm chí không liên quan đến dự án bao gồm các tệp không .tex.
  2. C-x 3 mở một bộ đệm mới trong khi để mắt đến bộ đệm đầu tiên như tổng quan định hướng của tôi về những tệp được đánh dấu mà tôi phải truy vấn riêng trong bộ đệm mới
  3. Chạy truy vấn bằng C-c q. Nó có các công tắc rất đẹp như !thay thế tất cả mà không yêu cầu cộng các điểm nổi bật trong tệp đã mở. Nhưng điều này có nghĩa là tôi phải chạy cùng một truy vấn mỗi lần và cho mỗi tệp được đánh dấu.
  4. Sau khi thực hiện tất cả các tệp được đánh dấu, tôi nhấn C-x s !để lưu tất cả trong một lần nhấn phím. Phù!

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

Quy trình làm việc thứ hai - ưu tiên

  • Đánh dấu tất cả .texcác tệp bằng % mchế độ Dired bằng chế độ regrec để chỉ đánh dấu .texcác tệp để về cơ bản việc chạy \.texsẽ đưa tôi đến đó.
  • C-x 3 tương tự như trên để giữ một bộ đệm cho tổng quan và bộ đệm khác cho truy vấn
  • Thực thi Qtrong Dired là truy vấn chỉ thay thế regrec trong các tệp được đánh dấu . Hoặc Alà chỉ truy vấn tìm kiếm regrec. Một truy vấn chính thức sẽ được thực hiện và một menu trợ giúp ?được cung cấp rộng rãi
  • C-x s !lưu và đóng tất cả các mớ hỗn độn. Nếu không, tôi phải đóng từng tệp đã mở một cách tẻ nhạt. Tôi hy vọng có một cách để chỉ đóng những người mà chúng tôi làm phiền.

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

Làm cách nào để tôi ước tính truy vấn tìm kiếm / thay thế regex của TXS trong nhiều tệp?

Ghi chú

  • Emacs 24.4 trên Windows 7

Câu hỏi này hiện có một phiếu bầu "gần" vì quá rộng, mà tôi có khuynh hướng đồng ý. Bạn có thể vui lòng thu hẹp câu hỏi xuống một phiên bản rời rạc hơn không (có lẽ dọc theo dòng "làm thế nào để tôi ước tính tìm kiếm truy vấn regex của TeXStudio trong nhiều tệp")? "Quy trình làm việc tốt nhất của bạn là gì?" là rất rộng và có khả năng mang lại câu trả lời dài và dựa trên ý kiến.
Dân

Tôi không thể viết một câu trả lời đầy đủ ngay bây giờ, nhưng bạn nên xem xét wgrep.
Malabarba

@Malabarba, vui lòng xem xét nâng cấp nhận xét của bạn thành câu trả lời nếu bạn nghĩ rằng điều này sẽ đáp ứng các tiêu chí được đề cập trong bài đăng.
tiến sĩ

Câu trả lời:


3

Nếu tôi hiểu chính xác, bạn muốn tìm kiếm các mẫu văn bản trong dự án của mình, thì bạn có thể muốn sử dụng Projectile cùng với Helm.

  • M-x helm-projectile-grep
  • Nhập mẫu văn bản hoặc mẫu regex.
  • Xem kết quả cập nhật cho mỗi nhân vật được nhập.

Đây là bản demo của helm-projectile-grep:

helm-projectile-grep

Bạn có thể lưu vào một bộ đệm riêng để tham chiếu sau bằng cách sử dụng hành Save results in grep bufferđộng` ( TABtheo mặc định, bạn chuyển sang bộ đệm hành động ).

Nếu bạn chưa từng nghe về Helm, bạn có thể đọc hướng dẫn về Helm của tôi . Truy cập hướng dẫn Helm Projectile của tôi để biết thêm các bản demo và hướng dẫn về Helm Projectile.

Thay thế, bạn cũng có thể sử dụng rgrep, được tích hợp sẵn:

  • M-x rgrep
  • Nhập mẫu văn bản / biểu thức chính quy vào Search for:dấu nhắc, tức là "kiểm tra"
  • Nhập loại tệp để tìm kiếm vào Search for "test" in file:, tức là *.tex.
  • Nhập thư mục để tìm kiếm đệ quy (do đó tên rgrep).
  • Nhấn RETvà xem kết quả.

Bản rgrepdemo:

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

Liên quan đến tiêu chí của bạn:

  1. RegExp Truy vấn tìm kiếm và thay thế chỉ trong các .textệp liên quan đến dự án .

Cả Helm và rgrephỗ trợ tính năng này.

  1. Làm nổi bật các trận đấu

Giống như trên.

  1. Tổng quan về các kết quả được tô sáng cùng nhau trong một bố cục có thể quản lý

Giống như trên.

  1. Làm thế nào để biết bao nhiêu thay thế hoặc kiểm tra phù hợp được thực hiện với hoặc còn lại và một cách để tiếp tục truy vấn trong trường hợp nó bị hỏng bởi một tổ hợp phím vụng về dừng truy vấn

Nếu bạn muốn thay thế các trận đấu, bạn có thể sử dụng wgrep để thực hiện thay thế cho *Grep*bộ đệm. Khi bạn hoàn thành và đồng bộ hóa lại *Grep*bộ đệm, mọi thứ sẽ được thay thế theo văn bản bạn đã thay thế.

Bạn "tiếp tục" bằng cách chạy lại truy vấn nếu bạn vô tình dừng nó. Nhưng khi sử dụng Helm, bạn có một helm-resumelệnh đưa bạn trở lại hoạt động trước đó nếu bạn vô tình hủy bỏ nó.

  1. Cách thoát khỏi truy vấn lộn xộn này bằng cách đóng và lưu tất cả các tệp liên quan và quay lại trạng thái trước khi gọi truy vấn này

Trên thực tế, bạn không phải giết bất kỳ bộ đệm nào nếu bạn sử dụng các công cụ như helm-mini . Quản lý hàng ngàn bộ đệm mở rất dễ dàng: bạn có thể thu hẹp bộ đệm mong muốn của mình bằng một mẫu văn bản ngắn. Bạn có thể giết tất cả cùng một lúc nếu bạn muốn.

Đây là bản demo của helm-mini:

helm-mini

Xem phần giải thích chi tiết trong trang Helm Github, trong phần "Sử dụng nâng cao" .


Tôi nghĩ rằng tôi phải cố gắng và nghiên cứu đạn với helm. Cảm ơn các hướng dẫn giàu ảnh chụp màn hình của bạn!
tiến sĩ

những gói tôi cần phải cài đặt để có được những chức năng phong nha: projectile, helmhelm-projectilelà hiển nhiên, những gì khác? Ngoài ra, có hai pkg MELPA helm-pojectilehelm projectile-allcó khuyến nghị nào ở đây không?
tiến sĩ

Thế là đủ rồi. Sau đó, làm theo cấu hình trong hướng dẫn của tôi. Bạn nên kiểm tra Installationphần trong hướng dẫn Helm và Helm Projectile của tôi.
Từ Đô

bạn sử dụng tổ hợp phím nào rgrepđể truy cập các lần xuất hiện khớp (tiến hoặc lùi) trong bộ đệm trên và dưới?
tiến sĩ

1
đó là một kinh nghiệm thay đổi Emacs để gặp helm và helm-đạn, Cảm ơn! Nhưng, grep tìm kiếm không hoạt động. Bạn có thể quan tâm để xem bài này: emacs.stackexchange.com/q/7178/2443
tiến sĩ

5

Nếu tôi hiểu những gì bạn muốn, RefTeX ' reftex-isearch-minor-modesẽ là những gì bạn đang theo đuổi. Từ mô tả của nó trong hướng dẫn:

Chuyển đổi chế độ nhỏ cho phép tìm kiếm gia tăng để hoạt động trên toàn cầu trên toàn bộ tài liệu đa biến. Các tập tin sẽ được tìm kiếm theo trình tự chúng xuất hiện trong tài liệu.

Theo báo cáo của T. Verron, điều này cũng hoạt động với regexps.

Để bật chế độ nhỏ này trong tất cả bộ đệm * TeX, hãy thêm một trong các dòng sau vào tệp init của bạn

(add-hook 'TeX-mode-hook (lambda () (reftex-isearch-minor-mode))) ; for AUCTeX
(add-hook 'tex-mode-hook (lambda () (reftex-isearch-minor-mode))) ; for the Emacs' bultin TeX mode.

Tốt để biết khi tôi sử dụng reftex. Nhưng vì không hỗ trợ regrec, tôi nghi ngờ phương pháp này sẽ tốt hơn!
tiến sĩ

2
Rõ ràng, nhấn M-rvào bộ đệm tìm kiếm chuyển sang tìm kiếm regrec, giống như nó làm cho thường xuyên isearch.
T. Verron

1
Và các phím tắt thông thường cho regrec isearch ( C-M-s) cũng hoạt động.
T. Verron

@ T.Verron cảm ơn bạn! Trên thực tế tôi đã không sử dụng tính năng này một cách rộng rãi, lần cuối cùng tôi đã thử nó, tìm kiếm regrec không hoạt động, ai biết tôi đã thử những gì sau đó;-)
giordano

@ T.Verron từ thanh menu-> ref-> hành động toàn cầu-> phiên bản tìm kiếm và phiên bản thay thế cho toàn bộ tài liệu cung cấp regrec tốt hơn khi bạn có thể chỉnh sửa biểu thức của mình trong khi trong xe buýt nhỏ nhưng tôi không biết chức năng này là gì và là gì các móc khóa.
tiến sĩ

3

Trong trường hợp bạn không biết, bạn chỉ có thể mở Dired trên một tập hợp tệp cụ thể (nằm trong bất kỳ thư mục nào, bất cứ nơi nào). IOW, bạn có thể sử dụng Dired làm điểm vào của bạn cho tất cả các tệp của một dự án. Các tính năng Dired thông thường hoạt động trong ngữ cảnh này: hoạt động trên các tệp được đánh dấu, v.v.

Nếu bạn sử dụng Bookmark + thư viện thì bạn có thể có các Dấu trang được điều hướng mà bạn sử dụng để cung cấp cho bạn các "chế độ xem" khác nhau của các tập tin khác nhau, các dấu của chúng, v.v.

(Hiện tại Emacs Wiki đang ngừng bảo trì và trong vài ngày nữa, do đó liên kết tạm thời không thể truy cập được.)


Có giống như thu hẹp Emacs C-x n n? bạn có thể vui lòng làm phong phú câu trả lời của bạn với nhiều chi tiết hơn. Cảm ơn.
tiến sĩ

Không; không có gì để làm với C-x n n- chỉ là một tính năng Dired ít được biết đến. C-h f diredcho bạn biết rằng bạn có thể chuyển làm đối số một danh sách các tên tệp (và thư mục) tuyệt đối thay vì tên thư mục. Đó là chìa khóa. Library Dired + giúp sử dụng tương tác dễ dàng hơn. (Nhưng một lần nữa, wiki tạm thời ngừng hoạt động, do đó liên kết cũng không có sẵn tại thời điểm này.)
vẽ
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.