Выберите вперед и назад к произвольной строке в Neovim - PullRequest
0 голосов
/ 19 мая 2018

Я учусь использовать tmux + neovim + ipython в качестве научной среды разработки Python, в основном для обработки данных и создания графики.

Чтобы я мог легко перезапустить часть кода, как я могу сделать ярлык, который выбирает вперед и назад от позиции курсора к некоторому произвольному маркеру ?.Например, если маркер установлен на #$% и мой курсор находится на в следующих строках,

#$%
x = bigarray[:, 0]
y = bigarray[:, 1]
scalar = 1.5¶
y = y * scalar
axis1.plot(x, y)#$%

Я хотел бы войти в обычный режим, введите <leader>s и выберите этот параметр.:

x = somearray[:, 0]
y = somearray[:, 1]
scalar = 1.5
y = y * scalar
axis1.plot(x, y) 

Я нашел документацию object-select для vim, которая похожа на то, что я хочу сделать, но работает только для определенных символов.


РЕДАКТИРОВАТЬ: также важно, чтобы только текущий раздел был выбран, если существует несколько.То есть со следующим файлом,

#!/usr/bin/env python3
#$%
section_1()¶
#$%
stuff_not_in_a_section
#$%
section_2()
#$%

<leader>s должен выбрать только section_1()


РЕДАКТИРОВАТЬ 2: Использование различных начальных / конечных символов также будет хорошо, например,фолдмаркеры по умолчанию {{{ и }}}.


Я думаю, что комбинация с vim-slime , которая отправляет выборку в ipython, и соответствующий set foldmarker, сделает neovim хорошей IDE.Альтернативный подход к моей ситуации также будет приветствоваться.

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Я нашел решение, которым я в основном доволен.Требуется, чтобы разделы кода были определены как складки / разделы на основе маркеров, что в любом случае примерно так и используется.

Если я нахожусь в пределах сгиба и нажимаю za, чтобы закрыть его, тогда C-c C-c, чтобы отправить абзац в vim-slime, отправляется весь сгиб, независимо от внутренних разрывов строк.Курсор возвращается к предыдущей позиции в конце команды, по желанию.

Таким образом, в общей сложности

nmap <leader>s za<C-c><C-c>za 

добивается цели, хотя и с некоторой раздражающей вспышкой экрана, когда складка открывается и закрывается.

0 голосов
/ 19 мая 2018

Вы можете использовать шаблон поиска:

/\v(#\$\%)@<=%(.|\n|\r){-}(#\$\%)@=

Это будет соответствовать тексту между двумя экземплярами #$%.Затем, чтобы выбрать совпадение под курсором, используйте:

nnoremap <leader>s mm/\v(#\$\%)@<=%(.\|\n\|\r){-}(#\$\%)@=<cr>'mgn

это будет:

  1. Отметить позицию курсора (mm)
  2. Поиск шаблона(/\v(#\$\%)@<=%(.\|\n\|\r){-}(#\$\%)@=<cr>)
  3. Возврат в отмеченную позицию ('m)
  4. Выбор подходящего рисунка (gn)
...