2010-07-10 61 views

Trả lời

56

Trong vim, bạn có thể làm

:%s/^\(.*\)$/"\1"/ 
  • s/regex/replace/ là lệnh vim cho tìm kiếm n thay thế.
  • % làm cho nó sử dụng xuyên suốt các tập tin
  • ^$ biểu thị bắt đầu và kết thúc của dòng tương ứng.
  • (.*) ghi lại mọi thứ ở giữa. () cần phải được thoát trong regexes vim.
  • \1 đặt nội dung bị bắt giữa hai dấu ngoặc kép.
+0

Cảm ơn .. đã hoạt động như một khoe! và cảm ơn lần nữa vì đã giải thích rất tốt .. – Myth

+4

@Myth Thêm 'c' vào cuối để làm cho nó nhắc nhở cho mỗi dòng: bạn có thể nhấn y/n để thay thế hoặc bỏ qua dòng':% s/^ \ (. * \) $/"\ 1"/c' – Amarghosh

+0

Thats khá tiện dụng .. bạn có thể chỉ cho tôi một số tài nguyên tốt để tìm hiểu regx? Xin lỗi vì sự chuyển hướng từ chủ đề chính. – Myth

2

tốt hơn util sẽ được sed (đặc biệt nếu bạn cần phải kịch bản nó)

cat foo.txt | sed s/^\(.*\)$/"\1"/g 
43

đơn giản:

%s/.*/"&"

Giải thích: Theo mặc định, một mô hình được hiểu như là lớn nhất có thể khớp, do đó, .* được hiểu là toàn bộ dòng, không cần ^$. Và trong khi \( ... \) có thể hữu ích khi chọn một phần của mẫu, không cần thiết cho toàn bộ mẫu, được thể hiện bằng cách & trong thay thế . Và / cuối cùng trong một tìm kiếm hoặc thay thế là không cần thiết trừ khi một cái gì đó khác sau; mặc dù bỏ nó ra có thể được coi là lười biếng. (Nếu vậy, tôi lười.)

+3

Tôi thích điều này hơn so với thực tế đánh dấu anwer, bởi vì nó là đơn giản và tôi lười quá :), làm thế nào về để lại một bình luận sau 5 năm – ahsant

+0

Không lười biếng, đủ để biết chi tiết cụ thể của regex, nhiều đánh giá cao thời gian để giải thích phương pháp này . – shdobxr

3

Hai câu trả lời gợi ý %s là hoàn hảo và tôi hy vọng bạn sẽ học cách yêu thích %s và sử dụng thường xuyên. Nhưng nếu bạn thấy mình muốn bao quanh các khối khác của văn bản thường xuyên, bạn nợ nó cho chính mình để kiểm tra các plugin surround.vim, mà sẽ cho phép bạn làm những gì bạn yêu cầu với bốn tổ hợp phím sau đây: yss" Và có nhiều khác các mục tiêu vòm tích hợp hữu ích. Ví dụ: để bao quanh từ hiện tại với dấu ngoặc kép: csw" và để thay đổi dấu ngoặc đơn xung quanh thành dấu ngoặc kép: cs'".

surround.vim là một trong các plugin vim yêu thích của tôi và tôi sử dụng nó hàng ngày.

+0

'yss '' thực sự là năm lần nhấn phím, nếu bạn đếm số cho dấu ngoặc kép. ;-) Nó vẫn nhanh hơn rất nhiều so với việc gõ cụm từ thông dụng. –

Các vấn đề liên quan