Jalankan gofmt pada penyimpanan file di IntelliJ

91

Saya menggunakan IntelliJ dengan plugin Golang. Apakah mungkin untuk mengonfigurasi IDE untuk menjalankan gofmt pada penyimpanan file?

Myles McDonnell
sumber
3
Saya akan merekomendasikan menggunakan godoc.org/golang.org/x/tools/cmd/goimports daripada gofmt standar. Goimports tidak hanya menjalankan gofmt, tetapi juga memperbaiki impor Anda.
David Brophy

Jawaban:

136

Tentu saja Anda bisa.

  1. instal plugin File Watchers
  2. buka "Preferensi-> Alat-> Pengamat File" & Tambahkan pengamat baru
  3. set File Type: Go, Program: jalan abosolute dari gofmt, Arguments:-w $FilePath$
  4. klik OK

masukkan deskripsi gambar di sini

yee
sumber
4
Ini selalu memformat ulang setiap file di repo saya, bahkan Godeps / *. Jadi saya melakukan hardcode pada jalan saya. Adakah cara untuk menggunakan $ FilePath $ tanpa memformat secara rekursif setiap file di repo setiap saat? Sepertinya FilePath memiliki efek domino untuk saya.
jayunit100
1
@ jayunit100 Anda dapat mengkonfigurasi parameter Scope 1. menambahkan cakupan lokal 2. beri nama & setel Pola ke: file [$ proj]: * / &&! file [$ proj]: Godeps // *! snapshot
yee
1
Ini tidak mengizinkan saya untuk mengedit file saya. Ketika saya mencoba untuk menambahkan baris baru ke kode lagi program membawa saya kembali ke baris sebelumnya dan menghapus baris baru saya. bagaimana cara menghentikannya? catatan: menggunakan phpstorm
bia.migueis
6
sudahlah, saya menemukan jawabannya. "Sinkronisasi file langsung" akan membuatnya jadi fmt berjalan segera setelah Anda membuat perubahan apa pun. batalkan saja dan itu hanya akan berjalan pada penyimpanan file (atau jendela tidak
fokus
1
Perhatian, jawaban ini agak ketinggalan zaman sekarang: plugin File Watchers sekarang memiliki pengamat "go fmt" yang sudah dibuat sebelumnya yang dapat Anda tambahkan tanpa perlu melakukan banyak pekerjaan sama sekali.
Aaron Shaver
61

Gogland EAP 16 menghentikan tindakan On Save dan menggantinya dengan plugin File Watchers .

Jika sebelumnya Anda telah mengonfigurasi tindakan On Save, IDE akan meminta Anda untuk menginstal plugin dan mengkonfigurasi semuanya secara otomatis. Jika Anda ingin mengaturnya sendiri dari awal, periksa apakah Anda memiliki plugin File Watchers dan jika tidak menginstalnya.

Aktifkan gofmt:

  1. Pergi ke Settings | Tools | File Watchers.
  2. Klik +tombol dan pilih go fmt.
  3. Nilai defaultnya bagus.
  4. Di Opsi Lanjutan pilih:
    • Simpan otomatis file yang diedit untuk memicu pengamat
    • Picu pengamat pada perubahan eksternal
  5. Klik ok!

Config

Anda dapat melakukan hal yang sama untuk goimportsdan gometalinter.

David Miguel
sumber
8
Sebenarnya lebih baik menyiapkan hanya goimports daripada go fmt karena ia juga menjalankan fmt, seperti yang ditentukan dalam dokumen goimports: "selain memperbaiki impor, goimports juga memformat kode Anda dengan gaya yang sama seperti gofmt sehingga dapat digunakan sebagai pengganti untuk pengait gofmt-on-save editor Anda "
dux2
2
Ini adalah jawaban yang benar untuk Goland per Oktober 2018
George Aristy
54

Jika Anda menggunakan Gogland, Anda memiliki opsi On Save di bawah Preferences

masukkan deskripsi gambar di sini

Arun Gopalpuri
sumber
1
gogland tidak sama dengan plugin go.
pengintai
Ini hampir sama seperti plugin python vs pycharm. Satu-satunya perbedaan yang mungkin adalah keterlambatan pembaruan. Selain itu, ini memberi Anda set fitur yang persis sama.
Alex Pavlenko
25
Mekanisme On Save tidak digunakan lagi dan akan dihapus di masa mendatang. Gunakan plugin File Watchers sebagai gantinya
Zangetsu
3
Tetapi bahkan di GoLand terbaru, saya tidak melihat opsi ini. Saya berpikir ketika klik kanan pada nama file, di bawah "Go", saya dapat menggunakan file fmt. tetapi saya tidak melihat opsi untuk mengaktifkannya selama penyimpanan otomatis.
penasaranengineer