数据科学家必备技能:掌握Jupyter完美文本编辑器配置技巧!
今日份知识你摄入了么?
图片来自Unsplash,作者Douglas Lopes
许多工程师并不认为JupyterLab是一个完整的IDE,其中一个主要原因是JupyterLab没有像VS Code或Sublime Text那样强大的文本编辑器。
JupyterLab允许用户创建和共享包含实时代码、公式、可视化和叙述性文本的文档,是这种互动工作的完美工具。然而,事实是,它的文本编辑器就像Windows记事本一样原始。你可以编写代码,但体验并不理想。
我们能做什么呢?我们想要一个可以随时在任何机器上运行的Docker Image,有属于我们自己的工作空间。用VS代码实现这一点并不容易,除非你愿意付钱——而JupyterLab,是免费的,而且它有一个活跃的数据群。如果能够两全其美,我们将建立一个免费、强大和便携的工作空间。
让我们退一步,将JupyterLab视为一个平台,而不是一个IDE。JupyterLab有一个终端仿真器,意味着你可以做几乎所有你能想到的事情。考虑到这一点,我们安装了NeoVim,将其配置得类似于VS代码。
我们的目标是创建一个JupyterLab Image,其拥有一个功能强大的笔记本编辑器和一个功能丰富的Python IDE。
图片来自作者
现在,让我们从配置编辑器的核心功能和外观开始。
✦
✦
核心配置
让我们从编辑器的核心设置开始。在你的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)等主要客户设计和实施人工智能和软件解决方案。
我的观点仅代表个人,与雇主无关。
原文作者:Dimitris Poulopoulos
翻译作者:高佑兮
美工编辑:过儿
校对审稿:Chuang
原文链接:https://towardsdatascience.com/jupyter-already-has-a-perfect-text-editor-this-is-how-you-can-configure-it-4d3eb37878f1
本周公开课预告
往期精彩回顾
数据科学家订阅ChatGPT三周体验:每天节省3小时工作时间!
保姆级指南:如何利用OpenAI和Python让你的简历更出彩!
Pandas的秘密:5个鲜为人知的功能,将彻底改变你的数据分析技能
ChatGPT带你掌握高效技巧,让你的Excel效率猛增10倍!
点击“阅读原文”查看数据应用学院核心课程