Альтернатива на основе Vim -для режима бродяги Emacs -

Я проверил, установив одну из переменных. Выполнение этого скрипта дважды:

while read line; do
        md5sum=${line%%" "*}
        #md5sum=$(echo $line | awk '{print $1}')
        echo "SUM: $md5sum FILE:_$file"
done < manifest.Stuph.180620

сначала с

md5sum=${line%%" "*}

и далее с

md5sum=$(echo $line | awk '{print $1}')

где файл "manifest.Stuph.180620" имеет длину 100939 строк (== около 14 МБ )дал следующие результаты:

Первый запуск (с использованием встроенной в bash обработки строк)

real    0m4.750s
user    0m4.174s
sys     0m0.550s

Второй запуск (с использованием конвейера)

real    10m54.255s
user    4m42.257s
sys     7m32.880s

Некоторые (такие как я )скажут, что если скорость имеет значение, то вам все равно не следует возиться с оболочкой, но иногда вы можете захотеть быть более эффективным -независимо от того, в какой среде вы работаете. Используете для работы.

Обратите внимание, что при этом:

while read md5sum filename; do
    (...etc...)

даже более эффективен, чем выполнение присваивания переменной, но не до такой степени, чтобы исключить конструкцию подстановки команд/конвейера/awk. Что мне кажется наиболее интересным, так это разница между производительностью сборки bash -и использованием внешних команд. Я буду более усердно изучать и использовать причудливые встроенные вещи!

2
27.08.2020, 22:56
1 ответ

Отказ от ответственности :Я уже отвечал на этот вопрос вvi.SEи продублировал ответ только для полноты картины.


Я до сих пор не нашел идеального решения, но оно достаточно хорошо работает для меня :с использованием vim-slime(, которое написано только вvimscript).

В моем файле конфигурации -(~/.config/nvim/init.vimили~/.vimrc)я использую следующую строку (s):

let g:slime_target = "neovim"
"let g:slime_target = "vimterminal"
"let g:slime_target = "screen"
"let g:slime_target = "tmux"

Нужен только один из них. Первая строка используется для neovim, но если я использую vim, я использую вторую (без комментариев ). В моем рабочем процессе яssh-подключаюсь к удаленному компьютеру, а затем открываю файл, который хочу использовать (, например. мой script.Rили list_of_commands.sh), затем создайте :vertical splitи затем откройте :terminal, где я затем могу запустить, например. мойGNU R-переводчик или bash. Если кто-то предпочитает использовать терминальный мультиплексор, новое разделение можно создать, используя либоscreenCtrl-a |Ctrl-a lCtrl-a c), либоtmuxCtrl-b %)и раскомментировать соответствующую строку сверху ()в конфигурации -.

Когда я затем вызываю команду:SlimeSend-(, сокращенную до Ctrl-cCtrl-c, поэтому одну и ту же комбинацию клавиш -нужно нажимать дважды ), выбирается текст, на котором в данный момент находится курсор. для отправки на цель (, которая, когда конфигурация правильная и ваш сплит уже присутствует, по умолчанию записывается правильно ).

Возможно, это не так элегантно, как TRAMPв Emacs, но это работает. Но если у кого-то есть идеи по улучшению, не стесняйтесь предлагать их!

0
18.03.2021, 23:09

Теги

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