Khi sử dụng trình soạn thảo văn bản/mã nguồn dựa trên GUI, một số tính năng là mặc định, chẳng hạn như chọn văn bản. Ý tôi là, hầu hết chúng ta thậm chí sẽ không coi đây là một tính năng nữa. Nhưng điều đó không đúng với trình soạn thảo dựa trên dòng lệnh như Vim. Riêng đối với Vim, khi chỉ sử dụng bàn phím, bạn sẽ phải học một số lệnh nhất định để chọn văn bản theo cách bạn muốn. Trong hướng dẫn này, chúng ta sẽ thảo luận chi tiết về tính năng này cũng như tính năng 'marks' của Vim.
Giả sử bạn có kiến thức cơ bản về trình soạn thảo Vim (Không? không vấn đề gì, chỉ cần vào đây), bạn sẽ biết rằng lệnh 'd' cho phép bạn cắt/xóa một dòng. Nhưng nếu bạn muốn cắt, chẳng hạn, 3 dòng thì sao? Câu trả lời của bạn có thể là: 'lặp lại lệnh ba lần'. Được thôi, nhưng nếu yêu cầu là cắt một đoạn văn hoàn chỉnh (hoặc, giả sử, một vài đoạn văn trong số đó) thì sao? Đầu tiên, đếm số dòng theo cách thủ công rồi chạy lệnh 'd' (kể cả khi bạn sử dụng '[n]dd') có phải là giải pháp thực tế không?
Không, không phải. Một giải pháp tốt hơn, trong trường hợp này, là chọn các dòng bạn muốn cắt/xóa, rồi chỉ chạy lệnh 'd' một lần. Sau đây là một ví dụ:
Giả sử tôi muốn cắt/xóa toàn bộ đoạn văn đầu tiên của phần GIỚI THIỆU được hiển thị trong ảnh chụp màn hình bên dưới:
Vì vậy, những gì tôi sẽ làm là đưa con trỏ đến đầu dòng đầu tiên và (đảm bảo rằng tôi không ở chế độ Chèn) nhập lệnh 'V' (Shift+v). Điều này sẽ dẫn đến việc dòng đầu tiên được chọn và Vim kích hoạt chế độ Visual Line.
Bây giờ, tất cả những gì tôi phải làm là sử dụng phím mũi tên xuống để chọn toàn bộ đoạn văn.
Vậy đó là những gì chúng ta muốn, phải không? Bây giờ chỉ cần nhấn 'd' và đoạn văn đã chọn sẽ bị cắt/xóa. Không cần phải nói, ngoài cắt/xóa, bạn có thể thực hiện bất kỳ tùy chọn nào khác trên văn bản đã chọn.
Điều này đưa chúng ta đến một khía cạnh quan trọng khác: không phải lúc nào chúng ta cũng cần xóa toàn bộ dòng hoặc các dòng; phải làm gì trong những trường hợp đó? Điều đó có nghĩa là, giải pháp mà chúng ta vừa thảo luận chỉ hoạt động khi bạn muốn thực hiện thao tác trên toàn bộ dòng(các dòng). Còn nếu yêu cầu là xóa ba câu đầu tiên trong một đoạn văn thì sao?
Vâng, cũng có một lệnh cho việc này - chỉ cần sử dụng 'v' thay vì 'V' (tất nhiên là không có dấu ngoặc đơn). Sau đây là một ví dụ trong đó tôi sử dụng 'v' rồi chọn ba câu đầu tiên trong đoạn văn:
Tiếp tục, đôi khi dữ liệu bạn đang xử lý bao gồm các cột riêng biệt và yêu cầu có thể là chọn một cột cụ thể. Ví dụ, hãy xem ảnh chụp màn hình sau:
Giả sử yêu cầu chỉ chọn tên quốc gia, nghĩa là cột thứ hai của văn bản. Vì vậy, những gì bạn có thể làm trong trường hợp này là đưa con trỏ xuống dưới phần tử đầu tiên của cột đang đề cập và nhấn Ctrl+v một lần. Bây giờ, sử dụng phím mũi tên xuống, chọn chữ cái đầu tiên của mỗi tên quốc gia:
Sau đó, sử dụng phím mũi tên phải, chọn toàn bộ cột hoặc toàn bộ tên.
Mẹo: Trong trường hợp bạn đã bỏ chọn một khối văn bản vì lý do nào đó và bây giờ muốn chọn lại khối đó, chỉ cần nhấn 'gv' ở chế độ lệnh.
Đôi khi, khi làm việc trên một tệp lớn (ví dụ: tệp mã nguồn hoặc tập lệnh shell), bạn có thể muốn chuyển đến vị trí cụ thể rồi quay lại dòng nơi bạn đã dừng ban đầu. Điều đó không thành vấn đề nếu các dòng đang đề cập không quá xa hoặc thỉnh thoảng bạn phải làm như vậy.
Nhưng ngược lại - bạn phải thường xuyên chuyển đổi giữa vị trí hiện tại và nhiều dòng xa khác nhau trong tệp. Giải pháp trong trường hợp đó là sử dụng dấu. Chỉ cần đánh dấu vị trí hiện tại của bạn, sau đó quay lại vị trí này từ bất kỳ đâu trong tệp bằng cách chỉ cần đề cập đến tên của dấu.
Để đánh dấu một dòng trong vim, hãy sử dụng lệnh m theo sau là một bảng chữ cái biểu thị tên của dấu (các tùy chọn có sẵn là a-z viết thường). Ví dụ: ma. Bây giờ, để quay lại dấu a, hãy sử dụng lệnh 'a (bao gồm dấu ngoặc đơn).
Mẹo: Bạn có thể sử dụng dấu nháy đơn (
Có thể có nhiều ứng dụng hữu ích khác của các dấu hiệu Vim. Ví dụ, bạn có thể đánh dấu một dòng, sau đó chuyển đến một dòng khác và chạy lệnh sau:
để xóa mọi thứ giữa vị trí hiện tại của bạn và dòng được đánh dấu.
Tiếp theo, đây là một thông tin quan trọng từ tài liệu chính thức của Vim:
Vì vậy, trong khi chúng ta đã thảo luận về cách sử dụng cơ bản của các chữ cái thường làm dấu hiệu Vim, thì các chữ cái viết hoa hữu ích như thế nào và ở đâu. Vâng, đoạn trích sau đây sẽ làm rõ điều này:
Và cuối cùng, để xóa một dấu, hãy sử dụng lệnh 'delmarks'. Ví dụ:
Lệnh đã đề cập ở trên sẽ xóa dấu a khỏi tệp. Tất nhiên, nếu bạn xóa một dòng có chứa dấu, thì dấu đó cũng sẽ tự động bị xóa. Để biết thêm thông tin về các dấu, hãy truy cập tài liệu Vim.
Khi bạn bắt đầu sử dụng Vim làm trình soạn thảo chính, các tính năng như được giải thích trong hướng dẫn này sẽ trở thành công cụ hữu ích giúp bạn tiết kiệm rất nhiều thời gian. Như bạn đã đồng ý, không có nhiều đường cong học tập liên quan đến các tính năng lựa chọn và dấu được giải thích ở đây - tất cả những gì cần thiết là một chút thực hành.
Để biết thông tin đầy đủ về các bài viết liên quan đến Vim trên HowtoForge, hãy truy cập vào đây.
Mã:
Nhưng trước khi bắt đầu thực hiện, cần lưu ý rằng tất cả các ví dụ, lệnh và hướng dẫn được đề cập trong hướng dẫn này đều đã được thử nghiệm trên Ubuntu 16.04 và phiên bản Vim mà chúng tôi sử dụng là 7.4.
Không, không phải. Một giải pháp tốt hơn, trong trường hợp này, là chọn các dòng bạn muốn cắt/xóa, rồi chỉ chạy lệnh 'd' một lần. Sau đây là một ví dụ:
Giả sử tôi muốn cắt/xóa toàn bộ đoạn văn đầu tiên của phần GIỚI THIỆU được hiển thị trong ảnh chụp màn hình bên dưới:
Vì vậy, những gì tôi sẽ làm là đưa con trỏ đến đầu dòng đầu tiên và (đảm bảo rằng tôi không ở chế độ Chèn) nhập lệnh 'V' (Shift+v). Điều này sẽ dẫn đến việc dòng đầu tiên được chọn và Vim kích hoạt chế độ Visual Line.
Bây giờ, tất cả những gì tôi phải làm là sử dụng phím mũi tên xuống để chọn toàn bộ đoạn văn.
Vậy đó là những gì chúng ta muốn, phải không? Bây giờ chỉ cần nhấn 'd' và đoạn văn đã chọn sẽ bị cắt/xóa. Không cần phải nói, ngoài cắt/xóa, bạn có thể thực hiện bất kỳ tùy chọn nào khác trên văn bản đã chọn.
Điều này đưa chúng ta đến một khía cạnh quan trọng khác: không phải lúc nào chúng ta cũng cần xóa toàn bộ dòng hoặc các dòng; phải làm gì trong những trường hợp đó? Điều đó có nghĩa là, giải pháp mà chúng ta vừa thảo luận chỉ hoạt động khi bạn muốn thực hiện thao tác trên toàn bộ dòng(các dòng). Còn nếu yêu cầu là xóa ba câu đầu tiên trong một đoạn văn thì sao?
Vâng, cũng có một lệnh cho việc này - chỉ cần sử dụng 'v' thay vì 'V' (tất nhiên là không có dấu ngoặc đơn). Sau đây là một ví dụ trong đó tôi sử dụng 'v' rồi chọn ba câu đầu tiên trong đoạn văn:
Tiếp tục, đôi khi dữ liệu bạn đang xử lý bao gồm các cột riêng biệt và yêu cầu có thể là chọn một cột cụ thể. Ví dụ, hãy xem ảnh chụp màn hình sau:
Giả sử yêu cầu chỉ chọn tên quốc gia, nghĩa là cột thứ hai của văn bản. Vì vậy, những gì bạn có thể làm trong trường hợp này là đưa con trỏ xuống dưới phần tử đầu tiên của cột đang đề cập và nhấn Ctrl+v một lần. Bây giờ, sử dụng phím mũi tên xuống, chọn chữ cái đầu tiên của mỗi tên quốc gia:
Sau đó, sử dụng phím mũi tên phải, chọn toàn bộ cột hoặc toàn bộ tên.
Mẹo: Trong trường hợp bạn đã bỏ chọn một khối văn bản vì lý do nào đó và bây giờ muốn chọn lại khối đó, chỉ cần nhấn 'gv' ở chế độ lệnh.
Đôi khi, khi làm việc trên một tệp lớn (ví dụ: tệp mã nguồn hoặc tập lệnh shell), bạn có thể muốn chuyển đến vị trí cụ thể rồi quay lại dòng nơi bạn đã dừng ban đầu. Điều đó không thành vấn đề nếu các dòng đang đề cập không quá xa hoặc thỉnh thoảng bạn phải làm như vậy.
Nhưng ngược lại - bạn phải thường xuyên chuyển đổi giữa vị trí hiện tại và nhiều dòng xa khác nhau trong tệp. Giải pháp trong trường hợp đó là sử dụng dấu. Chỉ cần đánh dấu vị trí hiện tại của bạn, sau đó quay lại vị trí này từ bất kỳ đâu trong tệp bằng cách chỉ cần đề cập đến tên của dấu.
Để đánh dấu một dòng trong vim, hãy sử dụng lệnh m theo sau là một bảng chữ cái biểu thị tên của dấu (các tùy chọn có sẵn là a-z viết thường). Ví dụ: ma. Bây giờ, để quay lại dấu a, hãy sử dụng lệnh 'a (bao gồm dấu ngoặc đơn).
Mẹo: Bạn có thể sử dụng dấu nháy đơn (
'
) hoặc dấu ngoặc đơn ngược (`) tùy thuộc vào việc bạn muốn nhảy đến đầu dòng được đánh dấu hay cụ thể là đến
dòng và cột của dấu.Có thể có nhiều ứng dụng hữu ích khác của các dấu hiệu Vim. Ví dụ, bạn có thể đánh dấu một dòng, sau đó chuyển đến một dòng khác và chạy lệnh sau:
Mã:
d'[mark-name]
Tiếp theo, đây là một thông tin quan trọng từ tài liệu chính thức của Vim:
Mã:
Mỗi tệp có một tập hợp các dấu hiệu được xác định bằng các chữ cái thường (a-z). Ngoài ra, còn có một tập hợp toàn cục các dấu hiệu được xác định bằng các chữ cái viết hoa (A-Z) để xác định một vị trí trong một tệp cụ thể. Ví dụ, bạn có thể đang chỉnh sửa mười tệp. Mỗi tệp có thể có dấu [B]a[/b], nhưng chỉ một tệp có thể có dấu [B]A[/b].
Mã:
Do những hạn chế của chúng, thoạt nhìn, các dấu hoa thị có vẻ kém linh hoạt hơn so với các dấu thường thị, nhưng tính năng này cho phép chúng được sử dụng như một loại "dấu trang tệp" nhanh chóng. Ví dụ, hãy mở .[URL=http://vim.wikia.com/wiki/Vimrc?utm_source=diendancongnghe.com]vimrc[/URL], nhấn mV và đóng Vim. Lần tới khi bạn muốn chỉnh sửa .vimrc, chỉ cần nhấn 'V để mở tệp đó.
Mã:
:delmarks a
Khi bạn bắt đầu sử dụng Vim làm trình soạn thảo chính, các tính năng như được giải thích trong hướng dẫn này sẽ trở thành công cụ hữu ích giúp bạn tiết kiệm rất nhiều thời gian. Như bạn đã đồng ý, không có nhiều đường cong học tập liên quan đến các tính năng lựa chọn và dấu được giải thích ở đây - tất cả những gì cần thiết là một chút thực hành.
Để biết thông tin đầy đủ về các bài viết liên quan đến Vim trên HowtoForge, hãy truy cập vào đây.