Làm thế nào để xóa vài ký tự đầu tiên của mỗi dòng?


Câu trả lời:


28

Nó thậm chí còn dễ dàng hơn! Một lần nữa, sử dụng các lệnh hình chữ nhật . Di chuyển đến một góc của hình chữ nhật bạn muốn xóa, nhấn C-SPCđể đặt dấu. Di chuyển đến góc khác của hình chữ nhật và nhấn C-x r d( delete-rectangle). Ví dụ: di chuyển đến dòng đầu tiên bạn muốn hành động, nhấn C-ahoặc homeđể đi đến đầu dòng, di chuyển xuống dòng cuối cùng bạn muốn hành động, để di chuyển đến góc dưới bên phải và sau đó xóa.C-u number C-fC-x r d

Nếu dòng cuối cùng có ít hơn số lượng ký tự mong muốn, có thể thuận tiện hơn khi sử dụng góc dưới bên trái và trên cùng bên phải. Ngoài ra, bạn có thể chèn các ký tự rác (điều này hữu ích nếu cả dòng đầu tiên và dòng cuối cùng ngắn hơn).

Bạn có thể sử dụng C-x r kđể giết hình chữ nhật, cho phép bạn kéo ( C-x r y) nó sau (di chuyển đến góc trên bên trái của nơi bạn muốn chèn nó).

Bạn cũng có thể sử dụng C-x r t( string-rectangle) và nhập một chuỗi trống.

Các lệnh hình chữ nhật được dựa trên các vị trí cột. Nếu bạn muốn xóa n ký tự, thay vì n cột (điều này tạo ra sự khác biệt với các ký tự nhiều cột như tab), bạn có thể sử dụng thay thế biểu thức thông thường : thay thế ^.\{42\}bằng không có gì để xóa 42 ký tự đầu tiên của mỗi dòng.


3
thay vì cố gắng nhớ tất cả các lệnh hình chữ nhật, bạn cũng có thể sử dụng Cx spc, thay vì C-spc, biến vùng của bạn thành hình chữ nhật và mọi thứ chỉ hoạt động.
Malabarba

1
@Malabarba Chỉ kể từ Emacs 24 mặc dù. (Viết cái này lên một cái máy có Emacs 23. Họ vẫn còn rất nhiều.)
Gilles 'SO- ngừng trở nên xấu xa'

2
Gửi

Điều này chỉ hoạt động với tôi trên GNU Emacs 23.4.1 (x86_64-pc-linux-gnu, GTK + Phiên bản 2.24,21) của 2013-10-25 trên allspice, được sửa đổi bởi Debian
davidrmcharles

4

Một khả năng khác: Tôi thực sự thích sử dụng nhiều con trỏ cho các nhiệm vụ như thế này. Có sẵn package.elthông qua MELPA, nó trở thành một phần không thể thiếu trong emacs của tôi. Tôi chỉ đơn giản là chọn I said(và có thể bao gồm ngắt dòng trước nó), sử dụng M-x mc/mark-all-like-thisvà theo cách của tôi. Nếu bạn muốn kiểm soát chi tiết hơn, bạn có thể sử dụng mc/mark-next-like-thishoặc mc/mark-next-lines.

Bàn phím của tôi:

(use-package multiple-cursors
  :bind (("C->"   . mc/mark-next-like-this)
         ("C-M->" . mc/mark-all-like-this-dwim)))

Đá Emacs bắt buộc! tập: http://emacsrocks.com/e13.html


3

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,
  • Sau đó di chuyển bằng các phím mũi tên hoặc bất kỳ lệnh di chuyển emacs nào như C-f
  • DEL để xóa lựa chọn

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,
  • Sau đó di chuyển bằng các phím mũi tên hoặc bất kỳ lệnh di chuyển emacs nào như C-f
  • C-x r d để xóa lựa chọn

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


3

Để hoàn thiện: xóa 3 ký tự đầu tiên khỏi mỗi dòng (chính thức: từ điểm trên hoặc trong khu vực) có thể được thực hiện bằng cách thay thế regrec ^...(hoặc nói chung hơn ^.\{3\}:) bằng một chuỗi trống.

Giải thích: trong regexen, ^có nghĩa là "bắt đầu của dòng", .có nghĩa là "bất kỳ nhân vật nào" và \{n\}có nghĩa là " n sự lặp lại của điều trước".

Điều này có một lợi ích bổ sung là tương tác (trừ khi một lần nhấn !, điều này giúp query-regexp-replacethay thế mọi thứ từ bây giờ mà không có thêm câu hỏi nào).


1
Tại sao các downvote?
mbork

0

Và một khả năng nữa:

F3C-aC-3C-dC-nF4

ghi lại một macro bàn phím, về cơ bản là "di chuyển đến đầu dòng, xóa ba ký tự và di chuyển đến dòng tiếp theo". Sau đó, bạn có thể phát lại nó cho đến khi kết thúc bộ đệm bằng C-uF4hoặc C-xC-kráp dụng nó cho các dòng trong khu vực. Điều này có một nhược điểm: nó sẽ bị hỏng khi bất kỳ dòng nào có ít hơn 3 ký tự.


-1

Nếu đó chỉ là một dòng bạn có thể zap-to-char với Mz khi xác định rằng ký tự đó không được lặp lại giữa điểm và điểm bạn muốn xóa. Đối với một số trường hợp, điều này nhanh hơn việc tạo ra một khu vực.

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.