Làm cách nào để thay thế một từ bằng một từ được kéo dài ở chế độ bình thường


25

Khi tôi phải thay thế một từ bằng một từ khác mà tôi đã nói trước đây, tôi thường sử dụng một quy trình làm việc có vẻ không tự nhiên đối với tôi:

Hãy nói rằng tôi có văn bản này:

foo bar buzz

Và tôi muốn kéo foovà thay thế barbằng những gì tôi đã kéo trước đó.

Sau khi kéo dài foo, tôi thấy các tùy chọn sau:

lựa chọn 1

  1. Đặt con trỏ trên barvớiw

  2. Đặt footrước mặt barvớiP

  3. Đặt con trỏ vào bphần còn lại barvà xóa từ bằngde

Lựa chọn 2

  1. Đặt con trỏ trên thanh với w

  2. Sử dụng deđể xóabar

  3. Đặt nội dung của thanh ghi 0 với "0P(kể từ khi tôi xóa bar, fookhông thể truy cập được nữa với một cách đơn giản p)

Cả hai cách dường như quá phức tạp đối với tôi và tôi chắc chắn có một cách hiệu quả hơn để đạt được hành động này nhưng tôi không thể tìm ra cách nào. Ý tưởng này sẽ là kết hợp các hành động xóa và đặt chỉ trong một hoặc ít nhất là tránh giữ từ đã xóa trong thanh ghi yank để tôi có thể đặt từ mong muốn một cách đơn giản p.

Ngoài ra, tôi biết chế độ thay thế được kích hoạt Rnhưng nó không cho phép đặt những gì đã được xử lý.

TL; DR : Làm thế nào để thay thế một từ bằng nội dung của thanh ghi yank?

Câu trả lời:


31

Giả sử bạn đã kéo footheo yehoặc một cái gì đó tương tự và con trỏ ở đâu đó foo, bạn có thể sử dụng Wvep:

  • Wđể đi đến bar(điều này rõ ràng là tùy chọn và sẽ phụ thuộc vào vị trí con trỏ hiện tại);
  • v để bắt đầu chế độ trực quan;
  • eđể đi đến cuối từ (bạn cũng có thể sử dụng các chuyển động khác ở đây, như iw);
  • pđể dán foo; điều này sẽ thay thế lựa chọn hình ảnh hiện tại (được đặt trong thanh ghi không tên, "").


6

Tôi đã tìm thấy một cách khác để làm điều đó, nó hơi giống với tùy chọn 2 nhưng nó có ưu điểm là không làm rối trạng thái của các thanh ghi.

Ý tưởng là sử dụng " thanh ghi lỗ đen ": Thanh ghi này có thể truy cập thông qua "_và có tính đặc biệt mà bạn có thể ghi vào nó nhưng không đọc được từ nó, vì vậy giống như một lỗ đen, thanh ghi này làm biến mất hoàn toàn mọi thứ đi vào nó. Ở đây chúng ta có thể sử dụng nó để fooở trong sổ đăng ký yank ngay cả sau khi barxóa.

Với giải pháp này, dòng chảy sau khi kéo dài foosẽ là:

  • Đi đến barvới W(hoặc bất kỳ từ cần thiết của khóa học)
  • Sử dụng "thanh ghi lỗ đen" để xóa barbằng"_de
  • Đưa footừ đăng ký yank với P. Thanh ghi yank vẫn chứa fookể từ khi barđi vào lỗ đen.

Tôi không chắc đó là một giải pháp tốt hơn so với giải pháp của @ Carpersmoker ( Về mặt vimgolf @Carpetsmoker thắng ) nhưng tôi không biết về đăng ký lỗ đen và tôi nghĩ một số người có thể quan tâm đến nó.


3
  1. Đi để bắt đầu "foo". Nhấn yiw. Điều đó yanks từ bên trong.

  2. Đi đến "thanh" nhấn thư w. Sau đó chọn nó và kéo lại:viw"0p

Tôi sử dụng ciwyiwrất nhiều.


4
Việc sử dụng các đối tượng văn bản như thế iwlà thú vị nhưng giải pháp của bạn thực sự giống như cách sử dụng của @ ThảmSmokerer: trực quan chọn từ thứ hai và đặt từ đầu tiên. Tôi cũng nghĩ rằng giải pháp của bạn sẽ hoạt động đơn giản pthay vì sử dụng "0đăng ký.
statox

1
  • Khi con trỏ ở bất cứ đâu trên từ,

    • yiw- kéo từ và lưu trữ trong 0đăng ký.
  • Chuyển đến từ đích để được thay thế

    • ciw sẽ xóa từ và đưa bạn vào chế độ chèn.
    • ctrl-r. A "sẽ bật lên yêu cầu đăng ký được gọi.
    • 0 sẽ dán từ yanks.

Các từ được đánh dấu là (bình thường!) Được lưu trong 0sổ đăng ký. Xem :registersđể xem bộ đệm được lưu trữ. Điều này có vẻ là một thủ tục dài, IMHO điều này mở ra cánh cửa cho các thủ thuật đăng ký tinh vi hơn nhiều.

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.