#vi
#vim
#macro
#automation
#text-formatting
Sử dụng macro đệ quy để định dạng một danh sách thô thành cấu trúc JSON hợp lệ.
Bạn đang ở trong trình soạn thảo vi với danh sách dữ liệu thô bên dưới. Hãy viết một quy trình macro bằng phím q để tự động định dạng từng dòng thành đối tượng JSON. Mỗi dòng có format 'tên,tuổi,thành phố'. Hãy biến đổi nó thành '{"name": "tên", "age": "tuổi", "city": "thành phố"}'. Sau khi ghi macro, hãy chạy nó cho tất cả các dòng còn lại trong file.
#vi
#vim
#visual-block
#numbering
#column-edit
Sử dụng chế độ Visual Block để chèn dãy số tăng dần vào đầu các dòng được chọn.
Bạn có một đoạn văn bản gồm 10 dòng. Hãy sử dụng chế độ Visual Block (Ctrl+v) để chọn cột ở đầu 10 dòng này. Thực hiện chèn một chuỗi con số bắt đầu từ 1 và tăng dần lên 1 đơn vị cho từng dòng (ví dụ: 01, 02, 03...) mà không cần gõ thủ công từng dòng. Sử dụng tính năng tăng số (increment) của vi trong chế độ này.
#vi
#vim
#regex
#substitution
#pattern-matching
Thực hiện thay thế phức tạp sử dụng biểu thức chính quy để hoán đổi vị trí Họ và Tên.
File hiện tại chứa danh sách tên theo định dạng 'Họ Tên'. Hãy sử dụng lệnh thay thế (substitute) trong vi với biểu thức chính quy để hoán đổi chúng thành 'Tên Họ' cho toàn bộ file. Ví dụ: 'Nguyen Van An' trở thành 'An Van Nguyen'. Sử dụng các nhóm bắt giữ (capture groups) để tham chiếu và đảo vị trí các từ.
#vi
#vim
#global-command
#ex-mode
#file-cleanup
Sử dụng lệnh global :g để tìm và xóa hoặc xử lý các dòng trống và dòng comment thừa.
File mã nguồn hiện tại chứa nhiều dòng trống rải rác và các dòng comment cũ bắt đầu bằng '// TODO'. Hãy sử dụng lệnh :g (global command) để xóa tất cả các dòng trống hoàn toàn và xóa tất cả các dòng có chứa chuỗi '// TODO' chỉ trong một lần thực thi lệnh mà không cần di chuyển con trỏ thủ công.
#vi
#vim
#registers
#copy-paste
#memory-management
Sử dụng các thanh ghi tên (named registers) để sao chép các đoạn văn không liên tiếp và ghép chúng lại.
Bạn cần thu thập các đoạn mã cụ thể nằm rải rác ở nhiều dòng khác nhau trong file. Hãy sao chép dòng thứ 5 vào thanh ghi 'a', sau đó tiếp tục sao chép dòng thứ 10 và ghép (append) thêm nội dung đó vào ngay sau thanh ghi 'a'. Cuối cùng, di chuyển con trỏ đến cuối file và dán toàn bộ nội dung đã lưu trong thanh ghi 'a' ra một lần.
#vi
#vim
#macro
#automation
#formatting
Thực hiện ghi macro và áp dụng nó để định dạng một danh sách thô thành các mục danh sách có thứ tự.
Bạn đang có một danh sách các từ khóa trên các dòng riêng biệt, chưa có định dạng. Nhiệm vụ của bạn là ghi một macro (bắt đầu bằng q và một ký tự register, ví dụ qa) để thực hiện các thao tác sau: di chuyển con trỏ về đầu dòng, chèn thêm '- ' vào đầu dòng, rồi di chuyển xuống dòng dưới. Sau khi ghi xong macro, hãy áp dụng macro đó cho toàn bộ danh sách từ dòng hiện tại đến hết tệp. Hãy mô tả chính xác các phím tắt bạn đã sử dụng để ghi và chạy macro.
#vi
#vim
#ex-mode
#global-command
#regex
Sử dụng lệnh :g để xóa tất cả các dòng trống trong tệp tin một cách nhanh chóng.
Tệp văn bản hiện tại của bạn chứa rất nhiều dòng trống xen kẽ, làm cho nội dung bị rời rạc. Thay vì dùng phím xóa thủ công từng dòng, hãy sử dụng lệnh Global (:g) kết hợp với biểu thức chính quy (regex) để tìm tất cả các dòng trống và xóa chúng trong một lần thực thi duy nhất. Hãy cung cấp chính xác câu lệnh bạn nhập vào dòng lệnh của Vi.
#vi
#vim
#substitution
#regex
#backreference
Sử dụng :s với capture groups và backreferences để đảo trật tự họ và tên.
Trong tệp văn bản, mỗi dòng chứa một cái tên theo định dạng 'Họ Tên' (ví dụ: 'Nguyen Van An'). Hãy viết một lệnh thay thế toàn cục (%) sử dụng capture groups trong regex để đảo ngược trật tự thành 'Tên Họ' (ví dụ: 'An Nguyen Van') cho tất cả các dòng trong tệp. Giải thích cách bạn xác định group và cách sử dụng backreference trong lệnh thay thế.
#vi
#vim
#registers
#yank
#paste
Sử dụng các register được đặt tên để sao chép và dán nhiều đoạn văn bản khác nhau mà không bị ghi đè.
Bạn cần tổng hợp thông tin từ ba đoạn văn bản khác nhau ở ba vị trí tách biệt trong tệp. Thay vì chỉ dùng clipboard mặc định, hãy sao chép đoạn đầu tiên vào register 'a', đoạn thứ hai vào register 'b', và đoạn thứ ba vào register 'c'. Sau đó, di chuyển đến cuối tệp và dán nội dung của ba register này theo thứ tự 'c', 'b', rồi 'a'. Hãy mô tả chuỗi phím tắt cụ thể cho từng thao tác.
#vi
#vim
#visual-block
#column-edit
#bulk-edit
Sử dụng chế độ Visual Block để chèn hoặc thêm văn bản vào đầu nhiều dòng cùng lúc.
Bạn có một danh sách gồm 10 dòng chứa các biến số (ví dụ: x, y, z...). Bạn muốn chuyển đổi chúng thành các chuỗi gán giá trị trong Python bằng cách thêm 'var_' vào đầu mỗi biến (ví dụ: var_x, var_y...). Hãy sử dụng chế độ Visual Block (Ctrl+v) để chọn cột đầu tiên của 10 dòng này và chèn thêm chuỗi 'var_' vào tất cả các dòng được chọn chỉ trong một thao tác duy nhất.
#vim
#modes
#normal-mode
#insert-mode
Giải thích sự khác biệt giữa Normal mode và Insert mode.
Giải thích sự khác biệt giữa Chế độ Bình thường (Normal mode) và Chế độ Chèn (Insert mode) trong Vim. Hãy mô tả cách chuyển đổi giữa hai chế độ này bằng các phím tắt cụ thể.
#vim
#save
#quit
#commands
Hướng dẫn các lệnh cơ bản để lưu và thoát khỏi Vim.
Hãy cung cấp các lệnh cần thiết trong Vim để lưu nội dung thay đổi vào đĩa, để thoát khỏi trình soạn thảo, và để thực hiện cả hai hành động cùng lúc (lưu và thoát).
#vim
#navigation
#keyboard
Sử dụng các phím h, j, k, l để di chuyển trong Vim.
Mô tả cách sử dụng các phím h, j, k và l để di chuyển con trỏ trong Vim. Tại sao nhiều người dùng lại ưu tiên sử dụng các phím này thay vì các phím mũi tên?
#vim
#editing
#insert
Hướng dẫn cách vào chế độ chèn văn bản.
Viết hướng dẫn từng bước để bắt đầu nhập văn bản vào một tệp trong Vim. Hãy giải thích cách đặt con trỏ và phím nào cần nhấn để chuyển sang chế độ nhập liệu.
#vi
#linux
#text-editor
#cơ-bản
Hướng dẫn quy trình cơ bản để bắt đầu làm việc với trình soạn thảo vi.
Hãy cung cấp các lệnh cơ bản để mở một tập tin trong vi, chuyển sang chế độ chèn (insert mode), viết một dòng chữ mới, quay lại chế độ lệnh (command mode), và lưu tập tin rồi thoát ra. Giải thích rõ sự khác biệt giữa các chế độ.