setup NeoVim + Tmux untuk alur kerja Ilmu Data dengan Julia – Beragampengetahuan
Oleh: Navi
Repost dari:
Hari: 04-07-2023
Ringkasan: Catatan untuk memulai dengan Neovim dan Tmux di Dunia Ilmu Data
kartu: #Python #Julia #rstats #tmux #neovim #tooling

- Memperkenalkan
- Mengapa mulai menggunakan Neovim dan Tmux? motivasi saya
- Diperlukan proses instalasi
- Edit init.lua dan tmux.config
- Beberapa tantangan untuk meningkatkan alur kerja
- menyimpulkan
Contents
Memperkenalkan
Dalam posting ini, saya akan memberikan beberapa catatan untuk memulai Neovim untuk Alur Kerja Ilmu Data. Penyiapan ini tidak terkait erat dengan Julia dan juga dapat digunakan dengan Python dan R. Idenya adalah bekerja dengan struktur panel ganda, di mana satu sisi berisi kode Anda dan sisi lainnya berisi REPL, yang menerima cuplikan yang Anda kirimkan dari sisi kode.
Di blog ini, saya akan membahas hal-hal yang dapat Anda tambahkan untuk memfasilitasi analisis data atau pengembangan yang lebih serius. Dengan starter khas di Neovim dan Tmux ini, saya akan menjelaskan beberapa perubahan penting dan paket baru untuk tujuan ini. Terakhir, saya akan menyelami detail yang masih perlu diperbaiki.
Mengapa mulai menggunakan Neovim dan Tmux? motivasi saya
Saya harus mengatakan, saya suka laptop. Saya sering menggunakannya dalam pekerjaan pertama saya di analitik dan mereka sangat membantu saya menggali lebih dalam masalah dan menguji kasus penggunaan yang berbeda. Saya juga telah bekerja dengan VSCode, meskipun saya tidak terlalu menyukainya, VSCode telah membantu saya dalam beberapa kasus penggunaan tertentu di mana diperlukan lebih banyak perspektif “rekayasa perangkat lunak”.
Mengingat hal itu, ketika saya membaca buku Abhishek Thakur “Accessing Almost Any Machine Learning Problem,” dan kemudian menonton seminar Joel Grus yang kontroversial dan lucu tentang mengapa dia tidak menyukai notebook, saya mulai berpikir secara mendalam tentang tujuan penulisan perangkat lunak yang mengikuti praktik yang baik, mudah diekspresikan, dan masih mudah dibuat prototipenya. Sayangnya, saya pikir Grus benar tentang itu. Bekerja dengan notebook dapat menyebabkan beberapa perilaku aneh, seperti menjalankan plot di lokasi yang berbeda, termasuk terlalu banyak informasi dan grafik yang tidak perlu dalam analisis Anda, tidak menghasilkan ringkasan saat diperlukan, dan masalah dengan reproduktifitas. Tampilan skrip, di sisi lain, tidak membantu saya mengulang dengan cepat saat saya membutuhkan jawaban cepat untuk pertanyaan sederhana.
Ketika saya pindah ke Julia, saya menyadari bahwa REPL berada di level lain, dan saya memahami bahwa bagian penting dari komunitas ini menggunakan (Neo)Vim atau Emacs untuk pengembangan. Saya ingin tahu tentang penggunaan alat ini untuk proyek ilmu data. Meskipun tidak banyak yang ditulis tentangnya dan komunitas yang menggunakan Vim/Emacs agak kecil dibandingkan dengan opsi lain, menurut saya ini cukup bagus karena minimalis (walaupun Anda dapat banyak menyesuaikan), cepat, dan menjanjikan peningkatan produktivitas setelah menguasai kombinasi tombol Vim (dalam 10 tahun).
Apa yang saya sadari adalah bahwa Anda masih dapat membuat prototipe seperti notebook (tetapi dengan tampilan yang lebih mirip RStudio) dengan satu panel untuk kode Anda dan panel lainnya dengan REPL terbuka. Kemudian Anda dapat mulai mengonversi kode agar terlihat seperti perangkat lunak serius, semuanya dalam satu jendela, tanpa memindahkan semua konten file .ipynb ke file .py atau .jl lainnya. Saya menemukan alur kerja ini lebih menarik.
Diperlukan proses instalasi
Pertama-tama, pastikan untuk menginstal Neovim dan Tmux. Ada banyak tutorial tentang topik ini, jadi saya tidak akan membahas detailnya di sini.
Penting untuk membuat file init.lua. Jika Anda tidak ingin menginstal semuanya satu per satu, saya sarankan Anda mengikuti kickstarter yang disediakan oleh nvim-lua/kickstart.nvim. Ini menyediakan alat dasar untuk bekerja dengan Neovim, termasuk pengelola paket, Treesitter, integrasi LSP, dll. Kickstarter ini menggunakan LazyVim sehingga akan lebih cepat dan tidak memerlukan pembaruan yang sering seperti PackerNvim. Buat saja file init.lua, salin dan tempel semua konten ke dalamnya, simpan file dan keluar. Ketika Anda membukanya lagi, itu akan mulai menginstal atau memutakhirkan sesuatu.
Anda juga ingin membuat profil Tmux, profil default di Tmux sudah baik untuk bekerja dengan Ilmu Data atau pengalaman Julia, tetapi bagaimanapun Anda ingin mengedit file untuk mengatur skema warna atau mengedit beberapa pintasan keyboard, untuk membuat tambahkan saja ~/.tmux.conf
Anda juga ingin membuat file konfigurasi Tmux. Konfigurasi default di Tmux sudah cocok untuk bekerja dengan Ilmu Data atau pengalaman Julia, tetapi Anda mungkin ingin mengeditnya untuk mengatur skema warna atau memodifikasi beberapa pintasan keyboard. Tambahkan saja ~/.tmux.conf untuk membuat file.
Edit init.lua dan tmux.config
Inilah yang diperlukan untuk mengedit file init.lua:
-
Tambahkan Julia ke init.lua untuk penumbuh dan pertimbangkan juga untuk menambahkan julias = {} untuk localhost
-
Pastikan untuk menambahkan sysimage untuk server bahasa. dalam diskusi ini mereka meringkas prosedur dengan sangat baik, Ikuti instruksi dan tambahkan cuplikan kode ke init.lua Anda
-- Run Julia LSP
require'lspconfig'.julials.setup{
on_new_config = function(new_config, _)
local julia = vim.fn.expand("~/.julia/environments/nvim-lspconfig/bin/julia")
if require'lspconfig'.util.path.is_file(julia) then
-- vim.notify("Hello!")
new_config.cmd[1] = julia
end
end
}
-
Ini seharusnya cukup untuk menjebak Julia. Jika Anda membuka file Julia, Neovim harus dapat mendeteksi LSP dan bekerja dengan properti lain seperti lompat ke definisi, dll. Untuk R dan Python, ini seharusnya sedikit lebih sederhana saat ini (tidak ada langkah 2).
-
Ada hal lain yang ingin Anda tambahkan, untuk proyek ilmu data salah satunya adalah vim-slime, Paket ini bagus untuk mengirim cuplikan kode dari file Anda ke Julia REPL. Pastikan untuk menginstalnya dan tambahkan kode berikut ke init.lua Anda. Ini akan memungkinkan Anda untuk membuka panel Tmux dan mulai berinteraksi dengan file tersebut. Anda dapat memodifikasi kode di bawah ini untuk mengubah target_pane Anda (jika Anda lebih suka REPL ke kiri atau atas, Anda dapat mengubahnya). Pintasan sebenarnya adalah Ctrl-c + Ctrl-c, yang dapat Anda modifikasi jika mau.
vim.g.slime_target = 'tmux'
-- vim.g.slime_default_config = {"socket_name" = "default", "target_pane" = "{last}"}
vim.g.slime_default_config = {
-- Lua doesn't have a string split function!
socket_name = vim.api.nvim_eval('get(split($TMUX, ","), 0)'),
target_pane = '{top-right}',
}
-
Untuk Tmux, ada beberapa hal yang bisa Anda tambahkan. Ini konfigurasi saya, sangat sederhana. Namun, saya mendorong Anda untuk menemukan preferensi Anda sendiri dengan Tmux.
set -g mouse on
set -g history-limit 102400
set -g base-index 1
set -g pane-base-index 1
set -g renumber-windows onunbind C-b
set -g prefix C-x# vim key movements between panes
# smart pane switching with awareness of vim splits
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# reloading for now:wunbind r
bind r source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf"
# plugin
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)set -g @plugin 'egel/tmux-gruvbox'
set -g @tmux-gruvbox 'dark' # or 'light'
run '~/.tmux/plugins/tpm/tpm'
Untuk tujuan ini, saya mempertimbangkan hal berikut dalam konfigurasi Tmux saya: mengaktifkan mouse, meningkatkan batas riwayat di panel (yang diperlukan karena batas default di Tmux cukup membatasi), menghitung dari 1 dengan panel, mengubah awalan (saya merasa lebih mudah menggunakan Ctrl-x daripada Ctrl-b), dan menambahkan penekanan tombol untuk berpindah antar panel seperti vim. Pintasan r digunakan untuk me-restart file konfigurasi ketika Anda menambahkan atau memodifikasi fitur, sehingga Anda dapat menggunakan awalan +r untuk menerapkan perubahan Anda. Terakhir, di Tmux Anda dapat menggunakan pengelola paket bernama TPM. Pastikan untuk menambahkan file konfigurasi Anda.
Beberapa tantangan untuk meningkatkan alur kerja
Sejauh ini, alur kerja dengan Neovim dan Tmux telah dibuat dengan baik. Namun, ada beberapa area yang bisa diperbaiki. Salah satunya adalah aspek visualisasi. Sebagai ilmuwan data, Anda harus terus mengulang dan memvisualisasikan data Anda. Jika Anda ingin mendapatkan wawasan mendalam tentang kumpulan data Anda dan membuat banyak visualisasi, penyiapan saat ini mungkin bukan yang terbaik. Namun, di Julia Anda dapat dengan mudah beralih ke Pluto untuk menampilkan semua metrik yang Anda inginkan. Satu hal yang saya coba berulang kali menunjukkan sel yang Anda gunakan di dalam terminal. Salah satu cara untuk melakukannya adalah dengan menggunakan unicodeplots. Jika Anda suka bekerja dengan Plots.jl, Anda dapat mengubah backend Anda dari gr() menjadi unicodeplots(). Kualitas gambarnya mungkin bukan yang terbaik menurut saya, tetapi memungkinkan untuk menggambar grafik secara instan di terminal Anda tanpa memerlukan perangkat lunak pihak ketiga. Untuk iterasi cepat, itu sudah cukup baik.
Poin penting lainnya untuk dipertimbangkan adalah menjaga konsistensi alur kerja antara kode Julia dan REPL Julia. Saat ini, saya memiliki alur kerja dengan Vim dan kode saya, tetapi REPL mengikuti logika yang berbeda. Di sinilah repositori yang disebutkan di atas kemungkinan akan membantu, karena bertujuan untuk menjembatani kesenjangan dan menjaga keseragaman antara kedua tabel. Mengintegrasikan penekanan tombol Vim ke dalam REPL memberikan pengalaman yang mulus, memungkinkan transisi yang lebih lancar dan meningkatkan alur kerja secara keseluruhan. Ini jelas merupakan area yang ingin saya jelajahi di masa depan untuk lebih meningkatkan perkembangan saya.
menyimpulkan
Di blog ini, saya menjelaskan cara menyiapkan Neovim dan Tmux dengan Julia (atau bahasa pemrograman sains data lainnya). Pengaturan ini memberikan perspektif minimalis. Bagi mereka yang suka memiliki banyak alat, mungkin terasa sedikit kekurangan. Namun, jika Anda mencari alat yang ringan, desain minimalis, dan suka bekerja di terminal, saya sangat menyarankan Anda untuk mencobanya.
Terkait
Software Terbaru Saat Ini
Aplikasi yang sedang trend saat ini
object oriented programming, programming language, programming adalah, web programming, belajar programming, tournament software, software, software adalah, contoh software, apa itu software, pengertian software, aplikasi, aplikasi penghasil uang, aplikasi bokep, aplikasi video, programming
#setup #NeoVim #Tmux #untuk #alur #kerja #Ilmu #Data #dengan #Julia