Di chuyển sau khi kết thúc từ hoặc Xóa sau cusor


8

Trình tự nhanh nhất để xóa đến cuối dòng sau vị trí con trỏ là gì?

Thí dụ:

Tôi muốn xóa dòng này một cách nhanh hơn

Trình tự: 5eDsẽ xóa ký tự cuối cùng của từline

Tôi muốn xóa lin này

Di chuyển xung quanh với vim thường đặt tôi vào ký tự đầu tiên hoặc cuối cùng của một từ, buộc tôi phải di chuyển thêm một lần nhấn phím mỗi lần tôi muốn xóa đến cuối dòng (trong ví dụ trên, bằng cách thêm một chuyển động sang phải: 5elD). Có cách nào hiệu quả hơn (bằng cách di chuyển sau khi kết thúc từ hoặc xóa sau con trỏ)?


1
6wDđể lại một khoảng trắng sau từ cuối cùng, nhưng ít nhất văn bản hiển thị là cách bạn muốn. 6wDxhoàn thành công việc, nhưng sau đó bạn lại có bốn lần nhấn phím.
Peter Lewerin

Cảm ơn Peter vì sự thay thế, nhưng thực sự giải pháp này để lại cho tôi một tổ hợp phím khác để hoàn thành công việc. Vì kịch bản này khá phổ biến, sẽ rất tuyệt nếu thực hiện công việc này trong một hành động. Tuy nhiên, trong hầu hết các tình huống, giải pháp của bạn tốt hơn giải pháp của tôi.
Pierre-Jean

Nếu bạn làm như Peter gợi ý và kết thúc với một khoảng trắng ở cuối, có những plugin như DeleteTrailingWhitespace có thể loại bỏ chúng một cách tự động.
Philipp Moers

Câu trả lời:


4

Dlà một lệnh bao gồm hoạt động trên một chuyển động bao gồm con trỏ ở một đầu và ký tự có thể in cuối cùng trên dòng ở đầu kia. Có AFAIK không có cách tích hợp nào để biến một lệnh bao gồm thành một lệnh độc quyền và ngược lại.

Giải pháp nặng nhất sẽ là xác định toán tử và chuyển động / đối tượng văn bản của riêng bạn.

Một giải pháp nhẹ hơn sẽ là xác định ánh xạ cho các trường hợp góc đó.

Một giải pháp thậm chí nhẹ hơn - nhưng nhàm chán - sẽ là dành thêm một vài lần nhấn phím trong chế độ trực quan.

Hoặc, bạn có thể chỉ cần di chuyển theo cách "nhanh nhẹn" hơn một chút:

5f D

1
Chà, tôi hơi buồn không có cách nào dễ dàng hơn, nhưng bạn đã trả lời câu hỏi của tôi. Cảm ơn bạn!
Pierre-Jean

1

Có nhiều cách để đạt được những gì bạn muốn:

5elD
6f D
6wDx
6whD
# ... probably others too

Tất cả những chi phí này bạn chỉ cần gõ phím +1.

Nếu việc xóa bắt đầu từ vị trí hiện tại +1 là có thể, thì cũng có nghĩa là yêu cầu xóa khỏi vị trí hiện tại -1. Nó cũng sẽ đặt ra câu hỏi về các lệnh khác, ví dụ như xóa cho đến khi kết thúc tệp từ dòng hiện tại +1, -1, v.v.

Làm thế nào điều này có thể làm việc? Tôi chỉ thấy hai cách có thể:

  1. Truyền tham số cho các lệnh hiện có để sửa đổi hành vi của chúng với sắc thái mong muốn. Điều này chắc chắn sẽ khiến bạn mất 1 lần nhấn phím, vì vậy bạn sẽ không khá hơn so với những gì đã tồn tại
  2. Có một tổ hợp phím mới cho hành vi này. Hầu hết các phím trên bàn phím đã có một thứ khác quan trọng và mạnh mẽ hơn để làm, nó sẽ là một lựa chọn rất khó khăn để gán một trong các phím không sử dụng cho một chức năng nhỏ như vậy

Vì vậy, tôi không thấy cách nào để có thứ gì đó tốt hơn các tính năng hiện tại :-)

Tôi đồng ý rằng thật đáng tiếc khi không có lệnh "nguyên tử" để xóa khỏi ký tự tiếp theo. Tôi thấy cách sử dụng thực tế của những gì bạn đang hỏi: khi cắt ngắn một văn bản, tôi thường muốn xóa bắt đầu từ một ký tự khoảng trắng, vì tôi không muốn để lại khoảng trắng ở cuối dòng (Git phàn nàn về nó, ví dụ). Và các lệnh nhảy wetừ không phù hợp cho việc này, vì wnhảy đến các chữ cái đầu tiên và enhảy đến các chữ cái cuối cùng, và không có phím tắt nào để nhảy lên khoảng trống sau một từ, ngoại trừ các tìm kiếm rõ ràng như f. Vì vậy, tôi hiểu và thậm chí chia sẻ nhu cầu của bạn. Tôi chỉ không thấy nơi này có thể được nén trong chức năng hiện có.

Cách thay thế tốt nhất tôi có thể nghĩ đến là ghi lại hành động trong một macro, giả sử d. Ở cuối từ (trên chữ cái cuối cùng), ghi lại như sau:

qdlDq

Sau đó, bạn có thể làm lại hành động này ở cuối một từ khác với @d. Để làm điều đó nhiều lần, bạn có thể làm @@. Khi thực hiện nhiều lần, việc này sẽ nhanh hơn để gõ lD, nhưng điều này có thể phụ thuộc vào khẩu vị của bạn. Nếu bạn không làm điều đó nhiều lần thì macro không thực sự có ích, vì dù sao nó cũng có cùng số lần nhấn phím (+ việc tạo macro).


"Vì tất cả các phím trên bàn phím đã có thứ gì đó quan trọng và mạnh mẽ hơn để làm, nên tùy chọn này dường như là không thể". Không đúng; có một số khóa không được sử dụng và một số khóa được cho là kém mạnh mẽ / quan trọng hơn có thể được ánh xạ lại để yêu cầu khóa lãnh đạo, giải phóng chúng cho một thứ thực sự quan trọng.

Chà, khóa tôi sử dụng khi kiểm tra ánh xạ là khóa backspace và đó không phải là lựa chọn tồi cho thao tác thực hiện xóa (hiện tại tôi đã cài đặt để thực hiện xóa dòng mà không thay đổi các thanh ghi thường được sử dụng bởi một hành động như vậy, vì vậy tôi có thể sao chép / cắt một số văn bản, xóa các dòng bằng cách sử dụng backspace, sau đó dán văn bản gố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.