Vim: выполнить абзац в оболочке - PullRequest
1 голос
/ 24 марта 2020

Я бы хотел выполнить абзац из файла оболочки при просмотре его в Vim.

yap: exec "!" . @" 

- это подход, который будет работать, когда все символы новой строки уже экранированы с \, а они - нет.

Другой подход будет

"*yap: !bash <CR><S-Ins><CR>

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

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Упрощенно:

vap:write !bash

Это работает, потому что :write может принимать аргумент файла или аргумент !cmd, в этом случае текст файла (или текст, выбранный диапазоном, который является абзацем при выходе из визуального режима) предоставляется на стандартный ввод cmd

2 голосов
/ 24 марта 2020

Вместо того, чтобы использовать содержимое регистра по умолчанию, это вызывает функцию, которая принимает диапазон.

function! Run() range
  echo system(join(getline(a:firstline, a:lastline), "\n"))
endfunction

Поэтому выберите ваш абзац vap и затем запустите :'<,'>call Run()

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