энергия: выполните команду оболочки без фильтрации

Считайте "Язык программирования C". Запишите короткие упражнения (некоторые находятся в книге). Используйте компилятор, такой как gcc.

33
задан pixelearth 15 November 2015 в 00:48
поделиться

3 ответа

Выберите блок текста, затем введите эти ключи: w! Sh

Все должно выглядеть так:

:'<,'>w !sh

Вот и все. Мне потребовалось всего 8 лет, чтобы выучить это:)

примечание: ввод текста: после выделения текста производит: '<,'> диапазон, указывающий начало и конец выделения.

Обновление 2016: На самом деле это всего лишь одно из применений универсального:

'<,'>w !cli_command

Который в основном позволяет вам «отправлять» произвольные части вашего файла внешним командам и видеть результаты во временном окне vi без изменения вашего буфера. Другие полезные примеры:

'<,'>w !wc
'<,'>w !to_file my_file

Я, честно говоря, считаю более полезным изменить текущий буфер. Это просто:

'<,'>!wc
'<,'>!to_file my_file
84
ответ дан 27 November 2019 в 17:43
поделиться

Одна из возможностей - использовать system () в пользовательской команде, примерно так:

command! -range -nargs=1 SendToCommand <line1>,<line2>call SendToCommand(<q-args>) 

function! SendToCommand(UserCommand) range
    " Get a list of lines containing the selected range
    let SelectedLines = getline(a:firstline,a:lastline)
    " Convert to a single string suitable for passing to the command
    let ScriptInput = join(SelectedLines, "\n") . "\n"
    " Run the command
    let result = system(a:UserCommand, ScriptInput)
    " Echo the result (could just do "echo system(....)")
    echo result
endfunction

Вызовите это с помощью (например):

:'<,'>SendToCommand wc -w

Обратите внимание, что если вы нажмете V%: , : '< , '> будет введено за вас.

:help command
:help command-range
:help command-nargs
:help q-args
:help function
:help system()
:help function-range
4
ответ дан 27 November 2019 в 17:43
поделиться

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

0
ответ дан 27 November 2019 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: