Làm thế nào để thêm tiền tố vào mỗi dòng?


35

Tôi có mã dưới đây:

Hello
There
I am some code

Và muốn thêm mã ở phía trước của nó, như:

I said Hello
I said There
I said I am some code

Vậy làm cách nào để thêm tiền tố vào mỗi dòng?

Câu trả lời:


47

Bạn có thể thêm một tiền tố với M-x string-rectangle, được ràng buộc với C-x r t. Đây là một phần của một loạt các lệnh hoạt động trên các lựa chọn hình chữ nhật ; cái này chèn văn bản ở mỗi dòng trong hình chữ nhật.

Bắt đầu bằng cách đặt dấu ở đầu dòng đầu tiên và di chuyển con trỏ đến ký tự đầu tiên của dòng cuối cùng bạn muốn đặt tiền tố:

*Hello
 There
▮I am some code

Sau đó sử dụng C-x r t, nhập tiền tố của bạn ( I said) và nhấn RET. Điều này thêm văn bản cho mỗi dòng trong hình chữ nhật:

I said Hello
I said There
I said I am some code

Nếu bạn không xếp hàng con trỏ của bạn trên cùng một cột với dấu của bạn, nó sẽ ghi đè lên phần đó của hình chữ nhật:

*Hello
 There
 I am▮ some code

với cùng một kết quả lệnh trong:

I said o
I said e
I said  some code

3
bạn là người thứ hai kiếm được huy hiệu câu trả lời hay :)
nicael

Một cách khác là sử dụng M-x string-insert-rectangle. Nó rất giống nhau, nhưng string-insert-rectangle chèn vào đầu mỗi dòng của lựa chọn, trong khi string-rectangle thay thế , vì vậy với phần sau bạn phải chính xác hơn về lựa chọn của mình nếu bạn không muốn ghi đè lên bất cứ điều gì.
Jeff Clites

32

Bạn có thể sử dụng nhiều chế độ con trỏ để đặt con trỏ trên mỗi dòng. Sau đó, bất kỳ văn bản bạn nhập sẽ được chèn trên mỗi dòng.

Bạn sẽ bắt đầu với điểm ở đầu đoạn mã:

▮Hello
 There
 I am some code

Sau đó đánh C->hai lần. (Đây là ràng buộc khóa được đề xuất; bạn phải tự thiết lập nó.) Điều này tạo ra hai con trỏ bổ sung trên hai dòng sau:

▮Hello
▮There
▮I am some code

Sau đó gõ I said. Văn bản sẽ được thêm vào mỗi dòng:

I said ▮Hello
I said ▮There
I said ▮I am some code

Cuối cùng nhấn RETđể thoát nhiều chế độ con trỏ và để lại điểm ở con trỏ cuối cùng:

I said Hello
I said There
I said ▮I am some code

Đây là một video cho thấy cách nó hoạt động.



12

Một tùy chọn khác là sử dụng các macro, có thể xử lý nhiều tác vụ hơn các lựa chọn hình chữ nhật hoặc nhiều con trỏ, ngay cả khi đó là một chút vụng về cho trường hợp cụ thể này.

Định vị con trỏ ở đầu dòng đầu tiên và nhấn F3để bắt đầu ghi, chèn văn bản, di chuyển con trỏ đến đầu dòng tiếp theo và nhấn F4để dừng ghi. Bây giờ nhấn F4lần nữa để lặp lại macro, C-2 F4lặp lại hai lần hoặc C-0 F4lặp lại cho đến khi gặp lỗi (chẳng hạn như hết dòng).


9

Bạn có thể cài đặt cái ác và thực hiện nó theo bất kỳ cách nào giống như vi - Tôi thích lựa chọn khối trực quan bằng cách sử dụng Ctrl+ Vđể đánh dấu từng dòng và sau đó Shift+ Iđể chèn và sau đó nhập văn bản bạn muốn chèn và cuối cùng nhấn ESCđể thoát khỏi chế độ chèn và văn bản sẽ được thêm vào từng dòng. Điều này rất giống với các lựa chọn hình chữ nhật emacs nhưng một vài tổ hợp phím ít hơn.


7

Điều này rất giống với câu trả lời của artagnon, nhưng replace-regexpkhông bị ràng buộc với bất kỳ khóa nào.

Vì vậy, tôi thực sự sử dụng query-replace-regexpcái được ràng buộc theo mặc định C-M-%và sau đó thay thế ^bằng tiền tố đã cho I saidvà sau đó nhập !để thay thế tất cả mà không cần nhắc nữa.


4

Nếu bạn đã cua-modebật, thì:

  • C-a để di chuyển đến đầu dòng,
  • C-RET để bắt đầu hình chữ nhật,
  • (phím xuống) hai lần để di chuyển đến dòng thứ ba,
  • I said dưới dạng văn bản được chèn
  • C-RET kết thúc hình chữ nhật

Tôi thích cua-modecách làm việc, so với hình chữ nhật tiêu chuẩn Emacs trong đó tương đương sẽ là:

  • C-a để di chuyển đến đầu dòng,
  • C-SPC để bắt đầu hình chữ nhật,
  • (phím xuống) hai lần để di chuyển đến dòng thứ ba,
  • C-x r t I said RET để chèn văn bản

Việc cua-modelưu hai lần nhấn phím so với hình chữ nhật Emacs tiêu chuẩn.

Nhưng đối với tôi, lợi thế bổ sung của chế độ cua là tôi có thể nối văn bản vào hình chữ nhật (cá nhân tôi không biết cách nối văn bản với hình chữ nhật Emacs tiêu chuẩn). Với chế độ cua, nó chỉ là một RETphím bấm, được nhập trước I said.

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.