Đây là trường hợp sử dụng của tôi:
Tôi có rất nhiều mã mà do thực thi kiểu, chúng tôi viết dòng mới sau và trước mỗi dấu ngoặc mở và đóng (tương ứng).
Thí dụ:
function func(args) {
statement 1;
statement 2;
if (condition) {
statement 3;
}
}
Mặc dù điều này rất hay và dễ đọc, tôi thực sự coi đây là một sự lãng phí không gian đáng để khám phá, nhưng các đồng đội của tôi không đồng ý với tôi. Về cơ bản đây là cách chúng tôi kiểm tra mã của chúng tôi và đó là điều đó.
Tôi đã nghĩ rằng có lẽ tôi có thể sử dụng các tính năng Vim để giúp tôi lưu màn hình bất động sản, trong khi vẫn cho phép tôi viết mã theo cách dài dòng. Tôi không ngại gõ nó ra, tôi chỉ muốn sử dụng không gian hiệu quả hơn. Tôi hình dung có lẽ tôi có thể để Vim tự động thu gọn các dòng trống vô cớ.
Tôi thấy hơi khó khăn khi thiết lập điều này bằng cách sử dụng các quy tắc cú pháp bởi vì bất cứ điều gì tôi viết dường như mâu thuẫn với các quy tắc cú pháp hiện có, nhưng điều tôi quyết định làm như một nỗ lực đầu tiên là viết các quy tắc này sẽ không va chạm:
syntax match aaaaaaaaa "\vabcd" conceal cchar=A
syntax match bbbbbbbbb "\vef\ngh" conceal cchar=B
Quy tắc thứ hai ở đây gần với những gì tôi muốn, đối với trường hợp khung mở là một dạng như /\v\{(\n\s*){2,}
: khớp với một khung mở với bất kỳ số nào lớn hơn hoặc bằng 2 của một dòng mới theo sau chỉ có khoảng trắng.
Điều gì xảy ra bên trong vim tuy nhiên là như sau:
Nếu tôi gõ
abcd
vào một dòng, nó sẽ được che giấuA
như mong đợi.Nếu tôi gõ
ef
trên một dòng vàgh
trên dòng tiếp theo, thì cả hai dòng đều bị che giấuB
.
Tôi thực sự thực sự hy vọng hai dòng ef\ngh
sẽ được giấu thành một dòng duy nhất để tôi có thể tiết kiệm một số không gian bộ đệm dọc theo cách này.
Nhưng tôi thấy bây giờ có lẽ đó là một vấn đề chi tiết triển khai Vim. Sụp đổ các dòng là một vấn đề cho việc gấp mã để giải quyết, có lẽ chỉ nằm ngoài phạm vi khi có liên quan đến việc che giấu.
Vì vậy, tôi tự hỏi nếu vẫn còn một số cách để làm những gì tôi muốn làm. Có thể sử dụng dấu gấp bằng cách nào đó? Vấn đề là tôi chỉ cần gấp khoảng trắng.
:h fold-expr
và:h 'fdm'
git
bạn thậm chí có thể sử dụng móc để thực hiện các thay đổi được áp dụng trong suốt.