Оболочка Vim и I Python для ноутбуков - PullRequest
0 голосов
/ 26 января 2020

Вариант использования

Я хочу загрузить ноутбук i python в виде файла .py, так как мне не нравится работать в среде ноутбука jupyter. Но я хочу использовать Vim и оболочку i python для имитации использования / функциональности ноутбуков jupyter изнутри vim, особенно в отношении выполнения отдельных ячеек / блоков.

В деталях, это то, что мне нужно сделать:

  1. Конвертировать блокнот jupyter в файл .py
  2. Редактировать .py файл в vim
  3. Выполнить текущую ячейку / блок, которые я редактирую в Vim, в Я Python оболочка, чтобы увидеть результаты.
  4. Вернуться к редактированию .py файла

    • l oop 2-4 до завершения, возможно, конвертировать обратно в ipynb.

В моей текущей настройке Vim работает с split windows. В первом окне отображается файл .py для редактирования, а во втором - окно терминала vim :term и оболочка I Python под первым окном.

Это файл .py, который был преобразован из записной книжки i python:

#!/usr/bin/env python
# coding: utf-8

# In[1]:
import numpy as np
# In[2]:
x = 3
# In[3]:
y = 4
z = 5

Я хочу создать одну привязку клавиш vim, которая определяет, какой блок я сейчас редактирую в vim в файле .py, выделяет его, копирует его в буфер обмена, а затем переключает windows в оболочку I Python и, если возможно, вставляет его, выполняет его и возвращает в окно редактора файлов vim .py.

Я пробовал это, но это не сработало:

nnoremap <C-y> /# In\[.*\]: <CR> j <C-v> n k "+y

Примечание. Я НЕ хочу использовать привязку клавиш vim из блокнота jupyter. Я хочу включить поведение и использование jupyter из самого vim.

1 Ответ

0 голосов
/ 26 января 2020

Слишком много пробелов в отображении. Помните: vim выполняет отображение буквально, пробел означает пробел, а не разделитель между командами. Это работает для меня:

:nnoremap <C-y> /# In\[.*\]:<CR>jVnk"+y

Upd . Для поиска до конца файла используйте шаблон \%$. Таким образом, вы можете искать «либо # In\[.*\]:, либо eof»:

\(# In\[.*\]:\|\%$\)

Скобки используются для группировки выражений; \| для разделения or-ответвлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...