数据科学家必备技能:掌握Jupyter完美文本编辑器配置技巧!

数据科学家必备技能:掌握Jupyter完美文本编辑器配置技巧!

许多工程师并不认为JupyterLab是一个完整的IDE,其中一个主要原因是JupyterLab没有像VS Code或Sublime Text那样强大的文本编辑器。

JupyterLab允许用户创建和共享包含实时代码、公式、可视化和叙述性文本的文档,是这种互动工作的完美工具。然而,事实是,它的文本编辑器就像Windows记事本一样原始。你可以编写代码,但体验并不理想。

我们能做什么呢?我们想要一个可以随时在任何机器上运行的Docker Image,有属于我们自己的工作空间。用VS代码实现这一点并不容易,除非你愿意付钱——而JupyterLab,是免费的,而且它有一个活跃的数据群。如果能够两全其美,我们将建立一个免费、强大和便携的工作空间。

让我们退一步,将JupyterLab视为一个平台,而不是一个IDE。JupyterLab有一个终端仿真器,意味着你可以做几乎所有你能想到的事情。考虑到这一点,我们安装了NeoVim,将其配置得类似于VS代码。

我们的目标是创建一个JupyterLab Image,其拥有一个功能强大的笔记本编辑器和一个功能丰富的Python IDE。

图片来自作者

现在,让我们从配置编辑器的核心功能和外观开始。如果你想了解更多关于数据科学的相关内容,可以阅读以下这些文章:
数据科学家订阅ChatGPT三周体验:每天节省3小时工作时间!
没有经验?一样能获得数据科学实习机会
14场Kaggle比赛,开启你的数据科学之旅
如何从数据分析师过渡到数据科学家的角色?

核心配置

让我们从编辑器的核心设置开始。在你的home中,有一个名为.config的隐藏文件夹,你需要点进去并创建一个名为nvim的新文件夹:

cd~/.config&&mkdir nvim

接下来,在名为init.vim的nvim文件夹中创建一个新文件:

cd nvim&&touch init.vim

init.vim是用于配置NeoVim的性能和外观的文件。

你可以通过完成内置的Vim Tutor教程来学习Vim-binding。因此,我们将使用NeoVim来编辑所有文件。习惯它的唯一方法就是尽可能多地使用它,相信我,一旦你习惯了它,你会惊讶于你工作的速度有多快。

所以,事不宜迟,让我们打开并编辑你创建的文件:

nvim init.vim

我们先设置行号、文本编码和语法高亮显示等简单功能。将以下行复制并粘贴到init.vim文件中:

" General setup
set number
set relativenumber
set encoding=utf-8
set mouse=a
set scrolloff=10
set colorcolumn=80
set textwidth=80

" Set syntax highlighting
syntax on

当你看到以引号开头的行,它就是一个注释。你可以在正常模式下使用:wq保存和退出文件,并再次打开它以观察更改。

接下来,Vim和NeoVim会使用H J K L键进行导航,但我不想将手指从标准位置移开来浏览文件,所以,我更喜欢把它们重新设置成我的手指已经放在上面的键:J K l;。为此,请在init.vim中添加以下行:

" Remap navigation keys
noremap ; l
noremap l k
noremap k j
noremap j h

最后,让我们处理特定于Python的设置,如自动缩进和将换行符设置为79个字符。复制init.vim中的以下行:

" Python specific settings
au BufNewFile,BufRead *.py
    \ set tabstop=4 |
    \ set fileformat=unix |
    \ set softtabstop=4 |
    \ set shiftwidth=4 |
    \ set textwidth=79 |
    \ set expandtab |
    \ set autoindent

au BufRead, BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/ " Highlight trailing whitespace

现在我们已经完成了这些基本设置,让我们来处理外观。毕竟,每个人都想在观感舒适的环境中工作。

提升它的观感

为了让我们的编辑器看起来如我们所希望般好看,我们将进入插件的“世界”。Vim和NeoVim拥有一个活跃的数据群,发布和维护着数以千计的插件。这些插件可以改变编辑器中每个小细节的性能。如果你在使用NeoVim时遇到了问题,那么很有可能其他人已经碰到了它,并发布了一个插件,让其做事变得更简单。

我们的第一步是安装一个插件管理器,用于安装、卸载和更新插件。我更喜欢使用vim-plug。要安装vim-plug,需要运行文档中指定的平台命令。

现在你有了一个插件管理器,那么安装一个NeoVim插件就很简单了。为了使我们的编辑器更加美观,我们将使用四个插件:

  • vim-airline:vim的精益和平均状态表
  • vim-airline-Themes:vim-airline的主题集合
  • awesome-vim-color-schemes:neo/vim的一系列出色的配色方案
  • vim-devicons:neo/vim的文件类型图标集合

要安装这些插件,首先,在init.vim中添加以下行:

call plug#begin()

Plug 'https://github.com/vim-airline/vim-airline' " Show status bar
Plug 'https://github.com/vim-airline/vim-airline-themes.git' " Customize status bar
Plug 'https://github.com/ryanoasis/vim-devicons' " Display developer icons
Plug 'https://github.com/rafi/awesome-vim-colorschemes' " Change color Schemes

call plug#end()

保存并退出文件,然后再次打开它并运行以下NeoVim命令:pluginstall。启动一个新窗格,并安装你的插件:

图片来自作者

几乎每个窗口都会使用命令:qa并再次打开文件。我们能立即看到其更改。现在,让我们解决一些问题。首先,你会注意到终端无法正确显示某些图标。这是因为你需要安装Nerd字体并在你的终端中使用它们。我将安装源代码Pro。首先,在Home下创建一个.fonts目录:

mkdir.fonts&&CD.fonts

获取源代码Pro Nerd字体:

wget https://github.com/ryanoasis/nerd-fonts/releases/download/v2.3.3/SourceCodePro.zip

解压:

unzip SourceCodePro.zip&&RM SourceCodePro.zip

最后,运行fc-cache-fv手动重建字体缓存。然后,进入“setting”>“advanced settings editor”菜单,在左侧边栏中找到terminal条目,并将“Font Family”选项更改为“SauceCodePro Nerd Font Mono”。就是它!用neovim再次打开init.vim文件,图标应该在那里:

图片来自作者

然而,有些东西看起来仍然很古怪。我们来修复它们并设定我们的中心主题。我喜欢molokai,所以我会选择这个。在init.vim中添加以下行:

" Set default colorscheme
colorscheme molokai

" Customize status bar
let g:airline_theme='molokai'

if !exists('g:airline_symbols')
    let g:airline_symbols = {}
endif

" airline symbols
let g:airline_symbols.branch = ''
let g:airline_symbols.readonly = ''
let g:airline_symbols.maxlinenr = ''

同样,保存并退出,再次打开文件,一切都应该正常了。恭喜你,在JupyterLab中让NeoVim成为你完美的Python IDE,你现在已经奠定了相关基础。

保存工作

要在你自己的image中保存到目前为止所做的工作,请运行以下命令:

docker commit <name-of-the-running-image> <new-image-name>

这将在当前运行的container的image上创建一个新层,并将所有内容打包到一个新image中,你可以将其推送到你的DockerHub帐户。

例如,对我来说,这个命令是:

docker commit jupyter dpoulopoulos/Jupyter:v0.0.1

也就是,你可以打开dpoulopoulos/Jupyter:v0.0.1,并在其中找到我们所做的一切!

接下来,我们将深入了解更高级的功能,例如如何添加文件系统资源管理器窗口和代码导航窗口。在那之前,练习学习你的vim-binding!

关于作者

我叫Dimitris Poulopoulos,是一名机器学习工程师,为Arrikto工作。我曾为欧盟委员会(European Commission)、欧盟统计局(Eurostat)、国际货币基金组织(IMF)、欧洲中央银行(ECB)、经合组织(OECD)和宜家(IKEA)等主要客户设计和实施人工智能和软件解决方案。

我的观点仅代表个人,与雇主无关。

感谢阅读!你还可以订阅我们的YouTube频道,观看大量大数据行业相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Dimitris Poulopoulos
翻译作者:高佑兮
美工编辑:过儿
校对审稿:Chuang
原文链接:https://towardsdatascience.com/jupyter-already-has-a-perfect-text-editor-this-is-how-you-can-configure-it-4d3eb37878f1