Как открыть файл по определенной строке и столбцу? - PullRequest
1 голос
/ 25 мая 2019

Я работаю над модулем, который должен открыть файл в vim в произвольной строке и столбце.Я делаю это через exec(), но vim не получает правильную строку и столбец:

Если я перегоню это в одну строку:

perl -E "exec(q{vim}, q{+'call cursor(1,3)'}, q{README.md})"

Это ошибкис:

"README.md" 116L, 3790C
Error detected while processing command line:
E20: Mark not set
Press ENTER or type command to continue

Когда vim показывает эту ошибку, ps показывает vim +'call cursor(1,3)' README.md, которая является командой, которую я хочу.Фактически, копирование / вставка vim +'call cursor(1,3)' README.md в новое окно терминала дает мне желаемое поведение.

Мне кажется, что vim считает, что строка равна 116, а не 1, и что столбец - 3790, а не3, когда команда запускается через Perl exec().

Это Perl 5.26.1, Vim 8.1 и GNU bash, версия 3.2.57 (1) -релиз (x86_64-apple-darwin18).

1 Ответ

6 голосов
/ 25 мая 2019

Команда bash

vim +'call cursor(1,3)' README.md

ничем не отличается от

vim '+call cursor(1,3)' README.md

Оба запускают vim со следующими аргументами:

0: vim
1: +call cursor(1,3)
2: README.md

Однако вы дали указание Perl передать следующие аргументы vim:

0: vim
1: +'call cursor(1,3)'
2: README.md

Perl-эквивалент этой команды оболочки будет

exec('vim', '+call cursor(1,3)', 'README.md')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...