Tôi đang sử dụng vim bằng plugin vim-golang. Plugin này đi kèm với a function called :Fmt rằng "định dạng lại" mã nguồn bằng cách sử dụng gofmt, một dòng lệnh thực thi.vim - tự động định dạng mã nguồn golang khi lưu
Tôi muốn gọi hàm: Fmt mỗi khi tôi lưu tệp, vì vậy nó được định dạng lại liên tục. Tôi nghĩ rằng điều này nên được thực hiện với chỉ thị autocmd. Nhưng tôi có hai nghi ngờ:
- Tôi không thể tìm cách thực hiện chức năng. Tôi đã thử viết Fmt và: Fmt ở cuối dòng autocmd, nhưng nó dường như không hoạt động. Tôi nghĩ rằng tôi bỏ lỡ một cái gì đó, như "gọi".
- Tôi muốn điều này xảy ra chỉ khi lưu một tệp filetype 'go'. Tôi không biết cách kết hợp hai điều kiện đó - tôi có thể kích hoạt các biến tùy thuộc vào loại tệp và tôi có thể thực hiện các công cụ nhỏ, như xóa dấu cách, bất cứ khi nào tệp được lưu, nhưng được phân tách.
Vì vậy, đây là những gì tôi có cho đến nay:
" I can set variables for go like this
autocmd FileType go setlocal noexpandtab shiftwidth=4 tabstop=4 softtabstop=4 nolist
" I can clean trailing spaces(conserving cursor position) on save like this
autocmd BufWritePre * kz|:%s/\s\+$//e|'z
" None of these worked:
autocmd BufWritePre,FileType go Fmt
autocmd BufWritePre,FileType go :Fmt
Wow, câu trả lời vô cùng rộng lớn, cảm ơn rất nhiều! Tôi đã kết thúc bằng cách sử dụng tùy chọn thứ hai - tôi không có kế hoạch đặt lại loại tệp nào cả. Cảm ơn! – kikito
Bạn có thể muốn thêm 'im lặng' nếu bạn cần đầu ra bình thường từ lệnh' Fmt' (tôi tiếp tục thấy 'X dòng được lọc'): ' autocmd FileType go autocmd BufWritePre im lặng Fmt' –
djd
Nó đã có trong 'vim -gocode' plugin https://github.com/Blackrush/vim-gocode/blob/master/ftplugin/go/fmt.vim#L20 –