2016-11-22 1 views
1

Когда я пытаюсь вставить сотни строк или больше в Vim, даже в режиме вставки, требуется гораздо больше (10 или более раз?), Чем вставлять тот же текст в TextEdit и сохранять его в виде файла. Я бы предположил, что Vim пытается вставить одного персонажа за раз и что это замедляет работу. Когда это довольно большая паста, мне приходится сохранять текст с помощью TextEdit, а затем открывать его в Vim. Есть ли более быстрый способ вставки текста?Более быстрый способ вставить данные в vim, чем в режиме вставки?

+0

Я бы предположил, что профилирование (': h profiling') было бы более полезным, чем спекуляция. :) –

ответ

5

Если Vim скомпилирован с поддержкой буфера обмена (:echo has('clipboard') возвращает 1), вы можете просто использовать "+p или "*p.

Если это не так (:echo has('clipboard') возвращает 0), сделайте себе правильный Vim. В Mac OS X MacVim - это путь.

3

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

Это правильно. Учитывая, как работает терминал, он не может пойти другим путем. Используйте GVim/MacVim в режиме графического интерфейса, и проблема должна исчезнуть.

В качестве альтернативы вы можете использовать команды терминала для ускорения работы. Например, на Mac вы можете сделать

:r!pbpaste 

чтобы вставить все, что находится в вашем буфере обмена под текущей строкой. Vim получает свой вход от команды pbpaste, а не терминала, поэтому он избегает использования одного символа по времени в терминале. Если вы находитесь в Linux, см. What's like OSX's pbcopy for Linux.

Еще один способ подхода - увидеть, откуда происходят сотни линий. Если это из другого файла, загрузите его в буфер Vim, затем используйте собственную копию-пасту Vim (y, p). Если это результат команды, попробуйте сначала перенаправить вывод команды в файл. Если это веб-страница, curl это. Буфер обмена и копирование в действительности не отражают первоначальный рабочий процесс на основе терминала; трубы и файлы.

Смежные вопросы