Почему эта серия команд не работает - PullRequest
0 голосов
/ 24 июня 2018

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

command Lnew y | tabnew | pu | s/\. /\r\r/g | noh | o | 1G 

Он работает до noh части, но части o и 1G не работают.Где проблема?

Ответы [ 3 ]

0 голосов
/ 24 июня 2018

В вашей команде Find-and-Replace также необходимо пропустить пробелы, поэтому вместо:

s/\. /\r\r/g

вам придется использовать:

s/\.\ /\r\r/g

Я былборолся с этим в течение довольно долгого времени в мои первые дни Vim.Надеюсь, это поможет.

0 голосов
/ 25 июня 2018

Возможное уточнение:

command! Lnew y | tabnew | pu  | -d | s/\. /\r/g | noh | pu=''  | 1

Команда Ex 'put' добавляет новую строку выше скопированной строки.Добавление команды «-d» решает эту проблему.

Когда я читаю, возникает вопрос о разбиении на точку и добавлении пустой строки в конце текста.Казалось бы, только одна команда \ r необходима в команде замены.

0 голосов
/ 24 июня 2018

Ваша команда является гибридом команд Ex и команд обычного режима. У вас есть два варианта:

  • использовать только команды Ex

    y | tabnew | put | s/\. /\r\r/g | nohlsearch | put='' | 1
    
  • добавьте к вашим командам обычного режима :help :normal

    y | tabnew | put | s/\. /\r\r/g | nohlsearch | normal! o^O1G
    

    Используйте <C-v><C-o> для вставки литерала ^O.

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