Rumah > pembangunan bahagian belakang > C++ > Pembangunan C dengan GNU Emacs

Pembangunan C dengan GNU Emacs

Patricia Arquette
Lepaskan: 2024-12-28 08:28:12
asal
695 orang telah melayarinya

C Development with GNU Emacs

Emacs direka bentuk dengan mengambil kira pengaturcaraan, ia menyokong bahasa seperti C, Python dan Lisp secara asli, menawarkan ciri lanjutan seperti penyerlahan sintaks, gaya pengekodan yang boleh disesuaikan dan pengesanan ralat masa nyata. Penterjemah Lisp terbina dalam menjadikan Emacs sangat mudah disesuaikan, membolehkan pengguna membentuk editor agar sesuai dengan aliran kerja tertentu atau mencipta fungsi baharu sepenuhnya.

Ekosistem sambungannya yang kaya memastikan ia kekal relevan merentas pelbagai bidang, daripada penulisan akademik kepada pengaturcaraan sistem, manakala antara muka yang boleh disesuaikan membolehkan pengguna mengoptimumkan persekitaran mereka untuk produktiviti maksimum.

Ia terus menjadi pilihan yang boleh dipercayai bagi mereka yang mementingkan kawalan dan serba boleh, membuktikan bahawa alat yang direka beberapa dekad yang lalu masih boleh memenuhi permintaan landskap teknologi yang berkembang pesat hari ini.

Mengapa Memilih Emacs?

Emacs lebih daripada sekadar editor teks—ia adalah platform yang berkuasa dan boleh dikembangkan untuk pengaturcaraan, penulisan dan penyesuaian. Tidak seperti editor moden seperti VS Code atau IntelliJ IDEA, Emacs berkembang maju dengan fleksibiliti dan kebolehprograman. Ia membolehkan pengguna menyesuaikan aliran kerja mereka secara mendalam, mengubahnya menjadi persekitaran yang sesuai untuk keperluan mereka yang tepat. Sama ada anda mengekod dalam C, mengurus projek besar atau menulis novel, Emacs boleh menyesuaikan diri dengan keperluan anda.

Bagi pengguna baharu, ini mungkin kelihatan menggembirakan, tetapi apabila anda memahami prinsipnya, Emacs menjadi alat yang berkembang bersama anda. Panduan ini bertujuan untuk membantu anda menyediakan persekitaran Emacs yang diperkemas, daripada konfigurasi asas kepada penyepaduan lanjutan, memastikan anda produktif setiap langkah.

C Development with GNU Emacs

Jadual Kandungan

  • Mencipta init.el
  • Memastikan Direktori init.el adalah Betul
  • Konfigurasi Asas untuk Emacs
  • Menambah Corak Gaya Pengekodan Kernel Linux
  • Memasang dan Mengkonfigurasi Pengurus Pakej MELPA
  • Memasang Pelayan LSP Clang
  • Meningkatkan Pembangunan C dengan Syarikat, Projektil, Treemacs dan Magit
  • Menambahkan GNU Global, GTags dan Helm-Gtags
  • Menggunakan YASnippet untuk Templat Kod
  • Mengkonfigurasi Semantik untuk Navigasi Sedar Konteks
  • Contoh Aliran Kerja Praktikal untuk Pembangunan
  • Helaian Penipuan
  • Rujukan untuk Pemalam
  • Sumber Pembelajaran Tambahan

Langkah-langkah:

Mencipta init.el

  1. Buka Emacs pada sistem anda.
  2. Gunakan arahan C-x C-f (tekan Ctrl dan x, kemudian Ctrl dan f), yang membuka fail untuk diedit.
  3. Taip laluan fail ~/.emacs.d/init.el untuk mencipta atau mengedit fail konfigurasi Emacs anda dan tekan Enter.
  4. Tambahkan konfigurasi yang anda inginkan pada penimbal. Setelah selesai, simpan perubahan dengan C-x C-s (tekan Ctrl dan x, kemudian Ctrl dan s).

Memastikan Direktori init.el adalah Betul

Untuk memastikan konfigurasi Emacs sentiasa merujuk direktori yang betul untuk fail init.el, tambahkan coretan berikut pada bahagian atas fail init.el anda:

(setq user-emacs-directory "~/.emacs.d/")
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ini secara eksplisit menetapkan pembolehubah direktori-emacs pengguna kepada ~/.emacs.d/, memastikan bahawa Emacs menggunakan laluan yang ditentukan untuk fail permulaannya dan konfigurasi berkaitan. Pendekatan ini mengelakkan potensi isu di mana Emacs mungkin merujuk direktori berbeza disebabkan tetapan khusus persekitaran.

Konfigurasi Asas untuk Emacs

Berikut ialah persediaan Emacs yang ringkas dan praktikal, diterangkan dengan jelas untuk membantu anda memahami tujuannya. Konfigurasi ini meningkatkan kebolehgunaan, memudahkan antara muka dan memastikan pengalaman pengekodan yang cekap.

Barisan ini menyatukan semua fail sandaran ke dalam satu direktori (~/.saves). Ia memastikan projek anda bersih dan mengelakkan ruang kerja anda bersepah.

(setq backup-directory-alist `(("." . "~/.saves")))
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Untuk mengurangkan gangguan, ini mengalih keluar elemen antara muka yang tidak perlu seperti bar alat, bar skrol, petua alat dan bar menu. Antara muka yang lebih bersih membantu anda menumpukan pada pengekodan tanpa hingar visual.

(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Persediaan ini melumpuhkan skrin permulaan Emacs, mengalih keluar mesej lalai dalam penimbal *calar* dan menyenyapkan loceng sistem. Ia mewujudkan persekitaran bebas gangguan sejak awal.

(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kursor ditetapkan kepada gaya kotak untuk keterlihatan yang lebih baik dan kesan berkelip dilumpuhkan. Gandingan automatik kurungan dan lekukan didayakan, menjadikan pengekodan lebih lancar dan pantas.

(setq user-emacs-directory "~/.emacs.d/")
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Nombor baris dipaparkan secara global untuk navigasi yang lebih mudah dan nombor lajur ditunjukkan dalam bar status untuk menjejaki kedudukan kursor dalam setiap baris.

(setq backup-directory-alist `(("." . "~/.saves")))
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Konfigurasi ini menambah paparan masa yang bersih dan padat dalam baris mod, menunjukkan hari, tarikh dan masa dalam format 24 jam. Purata beban dikecualikan untuk memastikan antara muka minimum.

(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Pilihan menggantikan teks yang diserlahkan secara automatik apabila menaip, dan penyepaduan papan keratan memastikan penyalinan dan penampalan lancar antara Emac dan aplikasi lain.

(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Semua pengekodan ditetapkan kepada UTF-8, memastikan keserasian dengan format teks moden dan mengelakkan isu pengekodan, terutamanya apabila bekerja dengan teks antarabangsa atau kod sumber.

(setq cursor-type 'box
      blink-cursor-mode nil
      electric-pair-mode 1
      electric-indent-mode 1)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Penyertaan sintaks didayakan secara global dengan mod kunci-font-global. Garis panjang dibalut secara semula jadi dengan mod garis-visual. Tanda kurung diserlahkan apabila kursor berada berdekatan dengannya dan fail yang dibuka baru-baru ini dijejaki untuk akses pantas.

(global-display-line-numbers-mode t)
(column-number-mode t)
Salin selepas log masuk
Salin selepas log masuk

Tema tangotango menyediakan skema warna yang menarik secara visual. Fon ditetapkan kepada "Consolas" dengan berat tebal dan saiz 15.2pt untuk kebolehbacaan yang lebih baik semasa sesi pengekodan yang panjang.

(setq display-time-format "%a %b %d %R"
      display-time-interval 60
      display-time-default-load-average nil)
(display-time-mode 1)
Salin selepas log masuk
Salin selepas log masuk

Nota: Ingat, kami menggunakan Emacs Lisp (Elisp), bahasa pengaturcaraan berfungsi, untuk mengkonfigurasi Emacs. Ini adalah kelebihan yang besar, kerana ia membolehkan penyesuaian yang sangat fleksibel dan boleh diprogramkan. Keupayaan untuk menulis logik dalam dialek Lisp yang berkuasa menjadikan Emacs bukan sahaja editor, tetapi platform untuk aliran kerja yang diperibadikan.


Menambah Corak Gaya Pengekodan Kernel Linux

Konfigurasi yang disediakan di bawah menyediakan Emacs untuk mematuhi gaya pengekodan kernel Linux, menekankan tab 8 aksara, peletakan pendakap K&R dan kebolehbacaan yang jelas. Ia termasuk fungsi penjajaran tersuai untuk senarai argumen, pengesanan automatik fail berkaitan kernel (cth., fail dengan pengepala Kbuild, Kconfig atau kernel), dan menggunakan gaya yang sesuai secara automatik. Ini memastikan ketekalan dan memudahkan penyuntingan kod kernel dalam Emacs.

Fungsi linux-kernel-coding-style/setup mengkonfigurasi Emacs untuk tetapan khusus kernel seperti mod indent-tabs, tab-width dan c-basic-offset kepada 8, manakala linux-kernel-coding-style/ Fungsi c-lineup-arglist-tabs-only menjajarkan senarai hujah menggunakan tab, mengekalkan pematuhan dengan garis panduan kernel. Cangkuk ini secara automatik menggunakan gaya pada mod c apabila mengedit fail kernel Linux, meningkatkan produktiviti dan pematuhan kepada standard pengekodan.

(setq select-enable-primary nil
      select-enable-clipboard t)
(delete-selection-mode 1)
Salin selepas log masuk
Salin selepas log masuk

Tambah konfigurasi ini pada fail permulaan Emacs anda (init.el). Emacs kini akan secara automatik mengesan fail kernel Linux dan menggunakan gaya pengekodan yang betul, menjimatkan masa anda dan memastikan pematuhan dengan piawaian pengekodan kernel.


Memasang dan Mengkonfigurasi Pengurus Pakej MELPA

MELPA memudahkan anda memasang pakej tambahan dalam Emacs.

Langkah-langkah:

  • Tambah MELPA pada Emacs:
(setq user-emacs-directory "~/.emacs.d/")
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  • Pasang pakej secara automatik jika ia tidak ada:
(setq backup-directory-alist `(("." . "~/.saves")))
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Selepas membuat perubahan pada fail init.el anda atau menambah konfigurasi baharu, anda boleh memuat semula Emacs tanpa menutup dan membuka semula:

  1. Muat semula Fail init.el:

    • Tekan M-x (Alt x), taip eval-buffer dan tekan Enter semasa dalam buffer init.el anda.
    • Sebagai alternatif, gunakan pintasan C-x C-e di hujung blok kod untuk menilainya.
  2. Nilai Kod Secara Manual:

    • Pilih coretan kod yang anda ingin muatkan semula, tekan M-x, taip eval-region dan tekan Enter.

Ini membolehkan anda menggunakan segera perubahan pada konfigurasi Emacs anda tanpa memulakan semula


Memasang Pelayan LSP Clang

Protokol Pelayan Bahasa (LSP) menyediakan ciri lanjutan seperti pelengkapan automatik dan semakan ralat masa nyata.

Keperluan yang Diperlukan

Windows

  • LLVM/Clang:
    • Muat turun pemasang LLVM dari tapak web rasmi: Keluaran LLVM
    • Semasa pemasangan, pastikan anda menambah LLVM pada PATH sistem.

Linux

  • Debian/Ubuntu:
(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  • Fedora:
(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

FreeBSD

  • Pasang clangd:
(setq cursor-type 'box
      blink-cursor-mode nil
      electric-pair-mode 1
      electric-indent-mode 1)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Langkah-langkah:

  • Pasang lsp-mod dan syarikat-mod:
(global-display-line-numbers-mode t)
(column-number-mode t)
Salin selepas log masuk
Salin selepas log masuk
  • Konfigurasikan laluan ke clangd jika perlu:
(setq display-time-format "%a %b %d %R"
      display-time-interval 60
      display-time-default-load-average nil)
(display-time-mode 1)
Salin selepas log masuk
Salin selepas log masuk
  • Pilihan: Sediakan penyerlahan sintaks lanjutan dengan lsp-ui:
(setq select-enable-primary nil
      select-enable-clipboard t)
(delete-selection-mode 1)
Salin selepas log masuk
Salin selepas log masuk

Apakah LSP dan Mengapa Menggunakannya?

Protokol Pelayan Bahasa (LSP) merapatkan jurang antara editor dan bahasa pengaturcaraan, menyediakan ciri seperti pelengkapan automatik, semakan ralat dan navigasi kod. Ini amat berguna untuk pembangunan C/C, di mana mengurus pengepala, nyahpepijat dan menavigasi pangkalan kod yang besar boleh mencabar.

Dengan menyediakan LSP dalam Emacs, anda memperoleh keupayaan untuk:

  • Lihat ralat sintaks masa nyata semasa anda menaip.
  • Lompat ke fungsi atau definisi berubah-ubah serta-merta.
  • Akses cadangan pintar untuk melengkapkan kod.

Ini menjadikan Emacs berdaya saing dengan IDE moden sambil mengekalkan sifatnya yang ringan dan boleh disesuaikan.

Syarikat, Projektil, Treemacs dan Magit

Meningkatkan persediaan Emacs anda untuk pembangunan C melibatkan penyepaduan Syarikat, Projektil, Treemacs dan Magit. Syarikat menyediakan pelengkapan automatik untuk pengaturcaraan C, mendayakan cadangan masa nyata untuk fungsi, pembolehubah dan kata kunci, menjadikan pengekodan lebih pantas dan cekap. Dengan mengkonfigurasinya untuk menggunakan syarikat-clang, anda memastikan sokongan teguh disesuaikan dengan pembangunan C.

Projektil memperkemas pengurusan projek dengan membenarkan navigasi pantas, penemuan fail dan penyusunan projek. Ia berpasangan dengan lancar dengan Treemacs, yang menyediakan gambaran visual berasaskan pokok bagi struktur projek anda, membantu anda mencari dan mengurus fail secara intuitif. Akhir sekali, Magit ialah antara muka lanjutan untuk Git, menyediakan alatan berkuasa untuk kawalan versi terus dalam Emacs.

Dengan pintasan seperti C-x g, anda boleh melakukan operasi seperti commit, branching dan penggabungan secara interaktif, meningkatkan aliran kerja dan produktiviti anda. Berikut ialah konfigurasi lengkap untuk menyediakan alatan ini dalam persekitaran Emacs anda:

(setq user-emacs-directory "~/.emacs.d/")
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Contoh Aliran Kerja Praktikal

Mari lihat cara anda boleh menggabungkan alatan ini dalam senario dunia sebenar:

  1. Buka Projek:
    • Gunakan C-c p f untuk mencari fail dengan cepat dalam direktori projek anda menggunakan Projectile.
  2. Navigasi Fail Secara Visual:
    • Buka Treemacs dengan M-0, dan gunakan kekunci anak panah untuk menyemak imbas struktur projek anda. Klik dua kali pada fail untuk membukanya.
  3. Aliran Kerja Git dengan Magit:
    • Perubahan peringkat: Buka Magit dengan C-x g, tekan s untuk mementaskan fail.
    • Komit: Tekan c c untuk melakukan perubahan dengan mesej.
    • Tekan: Gunakan P untuk menolak perubahan pada repositori jauh anda.
  4. Penyelesaian Kod:
    • Semasa mengedit fail .c, taipkan nama fungsi sebahagiannya dan gunakan cadangan mod syarikat dengan menekan TAB.

Penambahbaikan untuk Ditambah pada Artikel

  1. Konfigurasi GNU Global dan GTags:
    • Tambah arahan untuk menyediakan GNU Global dan GTags untuk navigasi kod:
(setq user-emacs-directory "~/.emacs.d/")
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  1. Integrasi Helm-Gtags:
    • Sertakan konfigurasi untuk helm-gtags untuk meningkatkan navigasi projek:
(setq backup-directory-alist `(("." . "~/.saves")))
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  1. Templat Yasnippet:
    • Sertakan YASnippet untuk templat kod:
(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  1. Konfigurasi Semantik:
    • Tambah Semantik untuk pelengkapan dan penghuraian kod yang sedar konteks:
(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  1. Ciri Navigasi Kod Tambahan:
    • Sebut semantic-symref untuk pengumpulan rujukan:
(setq cursor-type 'box
      blink-cursor-mode nil
      electric-pair-mode 1
      electric-indent-mode 1)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Tambahan ini meningkatkan kandungan sedia ada dengan menyediakan sokongan untuk navigasi lanjutan, pengurusan projek dan alatan automasi dalam Emacs, menyelaraskan artikel dengan amalan terbaik untuk pembangunan C/C moden.


Helaian Cheat

C Development with GNU Emacs

C Development with GNU Emacs


Rujukan untuk Pemalam

  • mod-lsp: Sokongan Protokol Pelayan Bahasa untuk pelengkapan automatik dan semakan ralat. GitHub
  • mod syarikat: Autolengkap sedar konteks. GitHub
  • lsp-ui: Peningkatan UI untuk mod lsp. GitHub
  • projektil: Navigasi dan pengurusan projek. GitHub
  • treemacs: Penjelajah fail berasaskan pokok. GitHub
  • magit: Antara muka Git untuk Emacs. GitHub
  • ggtags: Penyepaduan Global GNU untuk navigasi kod. GitHub
  • helm-gtags: Navigasi dengan GNU Global dan Helm. GitHub
  • yasnippet: Pengurusan coretan untuk kod boleh guna semula. GitHub
  • semantik: Penghuraian dan navigasi kod lanjutan. GNU CEDET

Sumber Pembelajaran Tambahan

  • Emacs untuk Pemula: Panduan mesra pemula untuk menyediakan dan menggunakan Emacs. Pautan
  • Pengenalan kepada Emacs Lisp: Ketahui cara menyesuaikan Emacs menggunakan Lisp. Pautan
  • Gaya Pengekodan Kernel Linux: Dokumentasi rasmi mengenai piawaian pengekodan kernel. Pautan
  • Menyediakan Emac untuk Pembangunan C: Panduan praktikal untuk mengkonfigurasi Emac untuk pengaturcaraan C/C. Pautan

Atas ialah kandungan terperinci Pembangunan C dengan GNU Emacs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan