2013-10-14 22 views
8

Vim tiếp tục xử lý mã perl của tôi làm chú thích và thụt đầu tự động không hoạt động.Trong Vim, cách tránh "/ *" được coi là chú thích

$dump=`cp /local/*.txt .`; 
if ($a == 0) 
{ 
    if ($b == 0) 
    { 
     print "HELLO"; 
    } 
} 

đã được định dạng như:

$dump=`cp /local/*.txt .`; 
        if ($a == 0) 
        { 
        if ($b == 0) 
        { 
        print "HELLO"; 
        } 
        } 

Điều này là do "/ *" trong dòng đầu tiên được coi là bình luận và do đó Vim bỏ thụt bất cứ điều gì sau đó.

tôi có thể nghĩ ra một cách giải quyết như sau:

$dump=`cp /local/*.txt .`; #*/; 

Để tự đóng nhận xét.

Nhưng có cách nào tốt hơn không?

Cảm ơn.

+5

Bạn có thể có phần mở rộng tệp chẳng hạn như '.c', chứ không phải' .pl'? Thay đổi tiện ích mở rộng và thụt đầu dòng sẽ hoạt động như mong đợi. – TLP

+7

Để theo dõi nhận xét của @ TLP, những gì hiện ': đặt filetype?' Hiển thị trong bộ đệm đó? Điều đó sẽ cho bạn biết nếu Vim nghĩ rằng đó là một tập tin Perl. –

+3

Bạn có thể vô hại thoát khỏi '*': '$ dump = qx! Cp /local/\*.txt.!' – mob

Trả lời

4

Bạn đang sử dụng cindent, có nghĩa là cụ thể để tự động mã C (bao gồm cả nhận xét khối kiểu C). Điều này không có nhận thức rằng bạn đang thực sự viết perl. Hãy thử smartindent thay vào đó, có vẻ như hoạt động tốt hơn với perl. Để thử điều này, hãy chạy set cindent! và sau đó set smartindent. Nếu điều này hoạt động tốt hơn, bạn có thể thay đổi nó trong tập tin .vimrc của bạn.

Nếu bạn đang nói về phím = để thụt lề, chứ không phải là thụt đầu dòng nhận dạng, điều này sử dụng trình định dạng riêng. Bạn có thể thay đổi những gì được sử dụng bằng cách thiết lập equalprg. Đối với perl, bạn có thể sử dụng set equalprg=perltidy\ -quiet để chạy các dòng được chọn qua perltidy.

+0

Xin chào, tôi đã thử nhưng dường như không hoạt động. Khi tôi sử dụng "=" để thụt lề, nó luôn lấy/* làm chú thích. Tôi nghĩ rằng đây là định dạng bình luận 3 mảnh vim, và độc lập với cindent? –

+0

@PanYan Bạn đã không đề cập rằng bạn đang sử dụng '=' để thụt lề cho đến bây giờ. Cập nhật câu trả lời của tôi. – AKHolland

+0

tất cả nhận xét của bạn là chính xác. vô hiệu hóa thụt lề cố định cindent trong khi gõ và 'set equalprg = pertidy \ -quiet' làm việc cho khóa" = ". Cảm ơn rất nhiều!! –

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