Thanh ghi Vim là gì

Thanh Ghi Vim La Gi



Các thanh ghi Vim là các khối lưu trữ được sử dụng để lưu trữ các văn bản và thao tác bị kéo, xóa. Các thanh ghi này có thể được truy cập bằng tên thẻ của chúng, có thể là số, chữ cái hoặc ký hiệu.

Nếu bạn đang sử dụng Vim thì bạn phải sử dụng thanh ghi Vim. Mỗi khi bạn sao chép/xóa văn bản hoặc thực hiện thao tác lệnh, Vim sẽ lưu thông tin này vào sổ đăng ký. Khi bạn dán nó, Vim lấy dữ liệu từ thanh ghi và đưa nó vào bộ đệm. Nói cách khác, các thanh ghi Vim hoạt động như một bảng tạm để lưu trữ văn bản và lịch sử lệnh.

Vim có tổng cộng 10 loại thanh ghi riêng biệt, mỗi loại phục vụ một mục đích riêng biệt. Trong hướng dẫn này, tôi sẽ khám phá các thanh ghi Vim, loại và cách sử dụng của chúng.







Ghi chú : Đối với hướng dẫn này, tôi đang thực hiện các lệnh trên macOS. Vim là một ứng dụng đa nền tảng, do đó các lệnh được đề cập trong hướng dẫn này sẽ áp dụng cho tất cả các phiên bản Vim bất kể hệ điều hành.



Toán tử đăng ký Vim

Các thanh ghi trong Vim có thể được sử dụng bằng các thao tác như sao chép, xóa hoặc thay đổi. Mỗi thao tác có các toán tử cụ thể, chẳng hạn như để kéo văn bản, toán tử y được sử dụng trong khi để xóa văn bản, toán tử d được sử dụng. Dưới đây là danh sách các toán tử thường được sử dụng:

Yanks (sao chép) dòng
đ Xóa dòng
cc Xóa dòng và bật chế độ INSERT
S Xóa ký tự và bắt đầu chế độ INSERT để thay thế
x Xóa ký tự dưới con trỏ
q Vĩ mô; lưu trữ tập lệnh vào một thanh ghi cụ thể

Để in văn bản được lưu trữ, P hoặc P toán tử được sử dụng:

P Đặt (dán) văn bản sau con trỏ
P Đặt văn bản trước con trỏ

Các lệnh này cũng tính số lượng. Ví dụ: để sao chép 10 dòng, hãy sử dụng 10 năm lệnh, tương tự như dán 10 bản sao của một dòng kéo dài 10p .

Đăng ký niêm yết

Để liệt kê tất cả các thanh ghi sử dụng :đăng ký hoặc :reg lệnh và để liệt kê sổ đăng ký cụ thể, hãy sử dụng :reg, trong đó là tên đăng ký (ví dụ: 0-9, a-z).

Theo cách tương tự, để liệt kê nội dung của nhiều thanh ghi, hãy sử dụng :reg “ yêu cầu.

Trong danh sách đăng ký, bạn sẽ thấy ba cột, Tên, loại và nội dung . Ở đây, Loại có nghĩa là loại nội dung, không phải loại đăng ký. Ba các loại nội dung có thể được sửa đổi bằng sổ đăng ký.

  • tôi : Theo dòng
  • c : Tính cách khôn ngoan
  • b : Khối khôn ngoan

Ví dụ: nếu nội dung được sao chép bằng thao tác theo dòng (yy) thì loại nội dung sẽ là tôi , nếu nó có tính cách khôn ngoan (Đúng) sau đó loại sẽ là c và nếu nội dung được sao chép theo khối (ctrl+v và y) sau đó loại sẽ được hiển thị như b .

Làm việc với các thanh ghi Vim

Các thanh ghi Vim có thể được sử dụng để lưu trữ nội dung bằng cách sử dụng các toán tử yank, delete và thay đổi. Nội dung được lưu trữ có thể được truy cập bằng cách sử dụng toán tử put.

Lưu văn bản vào sổ đăng ký
Khi bạn nhấn nút key để sao chép một dòng, nó sẽ được lưu vào thanh ghi mặc định gọi là thanh ghi không tên (“”) . Để lưu dòng đã sao chép vào một thanh ghi cụ thể, trích dẫn (“) theo sau là tên đăng ký và toán tử được sử dụng.

'

Ví dụ: để sao chép một dòng vào tên đăng ký Với sử dụng ' zyy . Tương tự, nếu bạn đã chọn nhiều dòng ở chế độ VISUAL, hãy sử dụng “ zy để lưu trữ các dòng trong thanh ghi z.

Truy cập vào Sổ đăng ký
Để truy cập vào thanh ghi Vim, trích dẫn (“) biểu tượng được sử dụng với tên đăng ký và p/p nhà điều hành.

'p

Ví dụ: nếu tên thanh ghi là z và để truy cập nội dung của thanh ghi này, hãy sử dụng “ zp ở chế độ BÌNH THƯỜNG. Tuy nhiên, để thực hiện thao tác tương tự ở chế độ INSERT, hãy sử dụng ctrl+r z .

Chế độ BÌNH THƯỜNG Để lưu trữ nội dung, hãy sử dụng trích dẫn (“) , tên đăng ký (a-z) , và toán tử (y, yy, d, c hoặc cc)
p Chế độ BÌNH THƯỜNG Để dán nội dung của một đăng ký sử dụng trích dẫn (“) , tên đăng ký (a-z) p/p nhà điều hành
ctrl+r Chế độ CHÈN Để dán nội dung của một thanh ghi, hãy sử dụng ctrl+r và tên đăng ký (a-z)

Bạn có ý tưởng cơ bản về thanh ghi Vim. Bây giờ, tôi sẽ thảo luận sâu hơn về từng loại thanh ghi và cách sử dụng nó.

Các loại thanh ghi Vim

Trong Vim, có 10 loại thanh ghi được thiết kế cho các mục đích cụ thể.

  1. Đăng ký không tên (“”)
  2. Thanh ghi được đánh số (0-9)
  3. Đăng ký xóa nhỏ (“-)
  4. Thanh ghi được đặt tên (a-z hoặc A-Z)
  5. Thanh ghi chỉ đọc (“:, “., “%)
  6. Đăng ký tệp thay thế (“#)
  7. Thanh ghi biểu thức (“=)
  8. Các thanh ghi lựa chọn và thả (“*, “+, +~)
  9. Thanh ghi lỗ đen (“_)
  10. Đăng ký mẫu tìm kiếm cuối cùng (“/)

1. Sổ đăng ký không tên (“”)

Đây là thanh ghi mặc định của Vim để lưu trữ văn bản bị kéo hoặc bị xóa bằng cách sử dụng y, yy, d, đ, s, hoặc x lệnh.

Các :reg “” lệnh có thể được sử dụng để liệt kê nội dung được lưu trữ trong thanh ghi không tên.

Để dán nội dung thanh ghi chưa đặt tên, sử dụng lệnh put (p hoặc P) yêu cầu. Theo mặc định, P lệnh đặt các cửa hàng nội dung vào sổ đăng ký không tên. Ngoài ra, dữ liệu được lưu trữ trong thanh ghi không tên cũng có thể được dán bằng lệnh “”p.

Trong ví dụ sau, tôi đã sao chép một dòng bằng cách sử dụng lệnh và sau đó đặt nó 5 lần bằng cách đếm 5 với p (5p).

2. Thanh ghi được đánh số (0-9)

Các thanh ghi được đánh số được sử dụng để lưu trữ văn bản được kéo hoặc xóa cuối cùng.

Sổ đăng ký 0 khác với sổ đăng ký 1-9 . Sổ đăng ký 0 sẽ luôn lưu trữ văn bản được kéo gần đây nhất. Ví dụ: nếu tôi kéo một dòng bằng cách sử dụng lệnh, dòng này sẽ được lưu trữ trong cả hai vô danh 0 sổ đăng ký.

Bây giờ, nếu tôi xóa một dòng bằng cách sử dụng đ , dòng đã xóa sẽ được lưu vào thanh ghi không tên và thanh ghi 1 trong khi văn bản được kéo cuối cùng sẽ vẫn được lưu trong sổ đăng ký 0 . Vì vậy, văn bản được kéo cuối cùng có thể được truy cập bất cứ lúc nào thông qua đăng ký 0 .

Các sổ đăng ký 1-9 lưu trữ văn bản đã xóa cuối cùng. Ví dụ: nếu tôi xóa một dòng bằng cách sử dụng đ lệnh, văn bản đã xóa sẽ được lưu trữ trong cả phần chưa đặt tên và thanh ghi 1 . Đăng ký 1 sẽ lưu trữ văn bản đã xóa mới nhất. Nếu xóa dòng khác thì văn bản đã xóa trước đó sẽ chuyển sang dòng đăng ký 2 , và cái mới nhất sẽ được lưu trữ trong sổ đăng ký và không tên 1 . Về cơ bản, các thanh ghi được đánh số (1-9) lưu trữ lịch sử của văn bản đã xóa.

Hãy hiểu thanh ghi được đánh số bằng một ví dụ. Tệp văn bản Vim sau đây bao gồm 10 dòng; chúng ta hãy kéo dòng 3 sử dụng yêu cầu. Bây giờ, hãy kiểm tra trạng thái của các thanh ghi bằng lệnh :reg.

Đường bị kéo hiện đang ở trong vô danh 0 sổ đăng ký. Bây giờ, hãy xóa từng dòng một bằng cách sử dụng đ yêu cầu. Vì vậy, cuối cùng dòng 10 sẽ nằm trong thanh ghi không tên và thanh ghi 1. Đồng thời, các dòng bị xóa khác sẽ được lưu vào thanh ghi 2-9 theo thứ tự tăng dần.

Những dòng này có thể được truy cập bằng cách sử dụng P yêu cầu. Ví dụ, để đặt văn bản đăng ký 9 sử dụng “9 giờ tối . Hơn nữa, nếu bạn muốn đặt giá trị của register 9 5 lần, sử dụng “95p .

3. Thanh ghi xóa nhỏ (“-)

Thanh ghi này lưu trữ văn bản đã xóa nếu nó nhỏ hơn một dòng, sử dụng các lệnh như x, daw, diw, dab, lại . Hơn nữa, nếu bạn xóa một số văn bản bằng cách sử dụng THỊ GIÁC chế độ lựa chọn và nếu nó nhỏ hơn một dòng thì nó sẽ được lưu trong thanh ghi xóa nhỏ. Trong Vim, một dòng có nghĩa là một câu hoàn chỉnh kết thúc bằng dấu chấm.

Ví dụ: trong file sau tôi chọn 3 từ hợp tác và hỗ trợ từ dòng số 9 và xóa chúng bằng cách sử dụng d nhà điều hành. Thanh ghi xóa nhỏ sẽ được sử dụng để lưu lựa chọn này vì nó không dài quá một dòng. Sử dụng :reg “- lệnh liệt kê nội dung của thanh ghi xóa nhỏ.

4. Thanh ghi được đặt tên (a-z hoặc A-Z)

Các thanh ghi được đặt tên được sử dụng để lưu trữ văn bản dành riêng cho người dùng. Vì vậy, nếu bạn muốn lưu trữ văn bản trong một sổ đăng ký tùy chỉnh thì 26 đăng ký từ Một ĐẾN Với có thể được sử dụng.

Ví dụ: tôi đang kéo một dòng trong tệp sau bằng cách sử dụng “ zyy , văn bản sẽ được lưu trữ trong Với đăng ký như thể hiện trong hình ảnh sau đây.

Các thanh ghi có tên viết thường và viết hoa có mục đích khác nhau. Ví dụ: nếu văn bản được lưu trong thanh ghi chữ thường, do đó, để thay thế văn bản của thanh ghi đó, thanh ghi chữ thường sẽ được sử dụng. Tuy nhiên, để nối văn bản vào thanh ghi chữ thường, thanh ghi chữ hoa có cùng tên sẽ được sử dụng.

Hãy hiểu nó thông qua một ví dụ. Từ tệp sau, tôi đã lưu dòng 8 trong sổ đăng ký x sử dụng “ xyy .

Để nối văn bản sau dòng này, trước tiên tôi sẽ chọn một vài từ ở chế độ VISUAL. Để nối thêm văn bản đã chọn, tôi sẽ sử dụng “Xy yêu cầu.

Để thay thế văn bản, tôi sẽ lại sử dụng “ xyy .

5. Các thanh ghi chỉ đọc (., %, 🙂

Vim có 3 thanh ghi chỉ đọc để lưu trữ dữ liệu được chèn văn bản, tên tập tin, thực hiện lần cuối yêu cầu.

. Lưu trữ văn bản được chèn cuối cùng
% Lưu trữ tên tập tin
: Lưu trữ lệnh thực thi cuối cùng

Tuy nhiên, những thanh ghi này như tên được đề xuất không thể sửa đổi được, có thể dễ dàng truy cập.

Để đặt văn bản được chèn cuối cùng, hãy sử dụng '.P yêu cầu.

Để in tên tập tin, sử dụng '%P yêu cầu.

Để in lệnh cuối cùng, sử dụng ':P.

Các @: lệnh có thể được sử dụng để lặp lại lệnh trước đó trong Vim. Trong ví dụ sau, tôi đã xóa 3 dòng đầu tiên, khi nhấn @: , 3 dòng nữa sẽ bị xóa, do đó lặp lại lệnh trước đó.

6. Thanh ghi bộ đệm thay thế (“#)

Bộ đệm thay thế là một tệp được mở trong bộ đệm hiện tại. Thanh ghi “# lưu trữ tên tệp của tệp được đệm trong bộ đệm hiện tại. Hãy mở một tệp khác trong cùng bộ đệm bằng cách sử dụng :e ~/.vimrc lệnh, lưu ý rằng tên tệp hiện tại là tập tin.txt .

Để đóng bộ đệm đã mở, sử dụng :bdelete hoặc :bwiout yêu cầu. Bây giờ, có thể thấy tên tệp thay thế được lưu trong thư mục “# đăng ký.

7. Thanh ghi biểu thức (“=)

Thanh ghi biểu thức là một thanh ghi duy nhất không được sử dụng để lưu trữ văn bản, thay vào đó, nó lưu trữ biểu thức. Ví dụ: nếu bạn có một vài số trong tệp, để tính tổng các số này, biểu thức Vim sẽ được sử dụng.

Thanh ghi này có thể được truy cập bằng cách sử dụng “= ở chế độ BÌNH THƯỜNG và ctrl+r = ở chế độ INSERT.

Ví dụ: để tìm sự khác biệt giữa hai số, hãy nhấn “= và dấu bằng sẽ xuất hiện trên thanh trạng thái; bây giờ hãy nhập cả hai số có dấu trừ (-) vào đó và nhấn nút Đi vào chìa khóa. Bây giờ, để in sự khác biệt, nhấn P hoặc sử dụng :đặt yêu cầu.

Để truy cập giá trị của thanh ghi biểu thức, hãy sử dụng :reg “= yêu cầu.

Tương tự, để lấy giá trị tuyệt đối của hai số, hãy sử dụng =abs(value1-value2) sự biểu lộ.

Theo cách tương tự, để lưu trữ đầu ra của lệnh hệ thống, có thể sử dụng thanh ghi (biểu thức) này. Ví dụ nếu muốn đọc nội dung của file tôi sẽ sử dụng =system(‘cat ’) , khi nhấn phím Return, nội dung đầu ra sẽ được lưu trữ. Sử dụng P hoặc :đặt lệnh, nội dung của đầu ra có thể được đặt vào bộ đệm.

Có một loạt các biểu thức có thể được sử dụng trong Vim. Để tìm hiểu thêm về biểu thức Vim, hãy sử dụng :biểu thức trợ giúp :cú pháp biểu thức trợ giúp lệnh.

8. Các thanh ghi lựa chọn và thả (“*, “+, “~)

Vim có hai thanh ghi lựa chọn “* (trích dẫn) và “+ (quoteplus) được sử dụng để lưu trữ văn bản từ GUI. Các thanh ghi này được sử dụng để sao chép văn bản từ các chương trình bên ngoài như trình duyệt hoặc bất kỳ trình xử lý văn bản nào khác.

Ví dụ: nếu bạn sao chép lựa chọn văn bản từ trình duyệt, sử dụng ctrl+c hoặc cmd+c nó sẽ được lưu trữ trong “* đăng ký. Tuy nhiên, bạn không thể sử dụng P hoặc :đặt để dán văn bản này vào trình soạn thảo Vim. Sử dụng '*P để đưa văn bản vào trình soạn thảo Vim được sao chép từ các ứng dụng bên ngoài.

Điều quan trọng cần lưu ý là cả hai “+ “* các thanh ghi được kết nối với bảng tạm, vì vậy cả hai (“*p, “+p) có thể được sử dụng để dán văn bản vào trình soạn thảo Vim. Tương tự, để đặt văn bản từ Vim, hãy sử dụng “*yy để kéo một dòng rồi dán nó vào bất kỳ ứng dụng GUI nào, hãy sử dụng ctrl+v hoặc cmd+v.

Điều quan trọng cần lưu ý là nếu cả hai đăng ký (+ & +) đang làm điều tương tự, vậy thì có ý nghĩa gì? Vim có hai thanh ghi lựa chọn “*, “+ làm công việc tương tự và đó là do hệ thống cửa sổ X11. X11 cung cấp hai phương thức để lưu trữ văn bản, một là sự lựa chọn và cái còn lại là bộ đệm cắt . Các lựa chọn thuộc sở hữu của ứng dụng và bị mất khi đóng ứng dụng, trong khi các bộ đệm bị cắt sẽ giữ văn bản được lưu trữ trong máy chủ X. Đối với hai loại lưu trữ này, các thanh ghi “* và “+ được sử dụng. Để tìm hiểu thêm về nó, hãy sử dụng :help x11-selection yêu cầu.

Tiếp theo, bỏ đăng ký “~ được sử dụng để lưu trữ văn bản từ thao tác kéo và thả cuối cùng. Ví dụ: nếu bạn thả một lựa chọn văn bản từ một ứng dụng bên ngoài, nó sẽ được lưu trong thanh ghi thả.

Nếu bạn thấy khó dán từ ứng dụng bên ngoài bằng ba phím khác nhau thì bạn có thể ánh xạ lựa chọn sẽ được lưu trong sổ đăng ký không tên.
Mở vimrc tập tin, đặt địa điểm clipboard=chưa đặt tên trong đó và lưu tập tin. Giờ đây, bất cứ khi nào bạn sao chép từ một ứng dụng bên ngoài, nó có thể được dán dễ dàng bằng cách sử dụng :đặt lệnh hoặc phím p.

Ghi chú : Thanh ghi thả (~) sẽ chỉ khả dụng nếu Vim được biên dịch bằng +dnd. Hiện tại, nó chỉ có sẵn cho GTK GUI.

9. Thanh ghi lỗ đen (“_)

Nếu bạn thực hiện thao tác sao chép hoặc xóa trong trình soạn thảo Vim, theo mặc định, nó sẽ lưu văn bản vào sổ đăng ký. Nếu bạn muốn xóa văn bản mà không lưu nó vào sổ đăng ký, hãy sử dụng sổ đăng ký lỗ đen. Thanh ghi này sẽ không sửa đổi thanh ghi không tên (“”) khi xóa văn bản.

Ví dụ: nếu tôi muốn xóa tất cả các dòng mà không lưu chúng vào thanh ghi chưa đặt tên, thì trước tiên tôi sẽ chọn tất cả các dòng bằng cách sử dụng ggVG rồi nhấn “_d phím để xóa tất cả các dòng. Tương tự, để xóa một dòng tới lỗ đen, hãy sử dụng “_dd .

10. Đăng ký mẫu tìm kiếm cuối cùng (“/)

Như tên cho thấy, thanh ghi này lưu mẫu tìm kiếm cuối cùng bằng cách sử dụng / hoặc ? các nhà khai thác. Ví dụ: nếu bạn tìm kiếm /Linux , sau đó sử dụng '/P sẽ dán từ Linux.

Vim sử dụng thanh ghi này để điều hướng với N N các phím sau khi tìm kiếm.

Nó là một thanh ghi có thể ghi được, nội dung của nó có thể được thay đổi bằng lệnh :let. Ví dụ: để lưu Linux vào sổ đăng ký này, hãy sử dụng :let @/=’Linux’.

Thanh ghi và Macro

Trong Vim, macro cũng được lưu trong các thanh ghi có tên (a-z). Nếu bạn không biết về macro thì macro là các lệnh thiết lập được lưu trong sổ đăng ký. Tập lệnh này có thể được thực thi bằng cách sử dụng dấu @ theo sau là tên đăng ký macro. Về cơ bản, macro loại bỏ nhu cầu gõ nhiều lệnh liên tục.

Ví dụ: để lưu macro vào sổ đăng ký tôi , Tôi sẽ sử dụng qm q . Tôi muốn chuyển đến 5 xuống dòng bằng cách sử dụng 5j và xóa dòng bằng cách sử dụng đ . Sử dụng, qm để bắt đầu ghi macro, rồi nhấn 5j đ . Bây giờ, để thoát ghi macro, hãy nhấn q . Để xác minh xem macro có được lưu trữ hay không sử dụng, :reg “m hoặc :reg m.

Để thực thi các lệnh này bằng thanh ghi macro, hãy sử dụng :@m yêu cầu.

Xóa sổ đăng ký

Không có cách tiếp cận đơn giản nào để xóa sổ đăng ký vì hầu hết các sổ đăng ký không cần phải xóa vì cuối cùng chúng sẽ bị ghi đè. Tuy nhiên, có một số kỹ thuật để xóa giá trị đăng ký trong trình soạn thảo Vim.

1. Ghi macro trống để xóa sổ đăng ký. Ví dụ, để xóa thanh ghi m, sử dụng qmq .

2. Đặt văn bản trống bằng cách sử dụng cho phép . Ví dụ: để xóa thanh ghi m, hãy sử dụng :let @m=”.

3. Sử dụng setreg() hàm lấy một chuỗi rỗng làm đối số. Ví dụ: để xóa đăng ký m sử dụng :call setreg('m', ”).

Phần kết luận

Có 10 thanh ghi khác nhau với các chức năng khác nhau nên gần như không thể nhớ được. Nếu bạn là người mới bắt đầu thì tôi khuyên bạn chỉ nên ghi nhớ ba thanh ghi, thanh ghi không tên (“”) , thanh ghi được đánh số (0-9) , và các thanh ghi được đặt tên (a-z) .

Để lưu văn bản vào sổ đăng ký, hãy sử dụng dấu ngoặc kép (“) ký tên đăng ký theo sau là lệnh của người vận hành (y, d, c) . Để dán văn bản từ một thanh ghi, sử dụng lệnh p hoặc P trước dấu ngoặc kép (“) và tên đăng ký.

Chắc hẳn bạn đã nghe nói về nó, nếu bạn đang thực hiện một nhiệm vụ nhiều hơn hai lần, thì hãy tự động hóa nó. Thanh ghi Vim có thể cực kỳ hữu ích để tự động hóa các tác vụ và cuối cùng là nâng cao trải nghiệm. Để tìm hiểu thêm về thanh ghi Vim, hãy sử dụng :đăng ký trợ giúp yêu cầu.