Удалите грязные начальные пробелы в Vim на Mac OS X - PullRequest
5 голосов
/ 12 июля 2009

Я копирую код с веб-сайта matplotlib и вставляю его в редактор Vim на терминале в Mac OS X:

пример кода pylab_examples: ellipse_demo.py

Хотя это нормально работает в BBEdit :

`from pylab import figure, show, rand
from matplotlib.patches import Ellipse

NUM = 250

ells = [Ellipse(xy=rand(2)*10, width=rand(), height=rand(), angle=rand()*360)
        for i in xrange(NUM)]

fig = figure()
ax = fig.add_subplot(111, aspect='equal')
for e in ells:
    ax.add_artist(e)
    e.set_clip_box(ax.bbox)
    e.set_alpha(rand())
    e.set_facecolor(rand(3))

ax.set_xlim(0, 10)
ax.set_ylim(0, 10)

show()

То есть весь код правильно выровнен. В Vim это выглядит так:

from pylab import figure, show, rand
from matplotlib.patches import Ellipse

NUM = 250

ells = [Ellipse(xy=rand(2)*10, width=rand(), height=rand(), angle=rand()*360)
        for i in xrange(NUM)]

            fig = figure()
            ax = fig.add_subplot(111, aspect='equal')
            for e in ells:
                    ax.add_artist(e)
                        e.set_clip_box(ax.bbox)
                            e.set_alpha(rand())
                                e.set_facecolor(rand(3))

                                ax.set_xlim(0, 10)
                                ax.set_ylim(0, 10)

                                show()

Как исправить эту досадную ситуацию? Имеет ли это какое-то отношение к различным соглашениям возврата каретки / перевода строки на Mac?

Ответы [ 5 ]

17 голосов
/ 12 июля 2009

Используйте команду :set paste перед вставкой текста. Это отключает автоиндентирование, а также различные другие вещи, которые могут помешать вставке. Чтобы восстановить нормальную работу, используйте :set nopaste.

2 голосов
/ 12 июля 2009

Или используйте :r!pbpaste - вставляет вывод из команды pbpaste (которая является текущим буфером вставки) в текущую строку; не нужно возиться с режимами и тому подобным.

1 голос
/ 12 июля 2009

Если нужно, вы можете просто использовать cat(1):

$ cat > newfile.py
Paste the code here, then press Ctrl-D for EOF.
Make sure to type EOF on an otherwise empty line
or bad things will happen to your children.
$ vi newfile.py

Должно работать.

0 голосов
/ 12 июля 2009

Помимо уже упомянутой команды :set paste, вы всегда можете выполнить команду "+p, чтобы вставить содержимое буфера обмена в текущее местоположение. Я не использовал Vim на Mac OS X, но я уверен, что это все еще действует. В Linux "*p для буфера обмена выбора и "+p для буфера обмена копирования и вставки; в Windows они оба указывают на системный буфер обмена. "+p сначала немного странная команда, но как только вы привыкнете использовать этот тип команды, она становится очень быстрой. В качестве альтернативы вы можете использовать :put +, чтобы сделать то же самое.

:help quote
:help put
:help :put
:help registers
0 голосов
/ 12 июля 2009

Если бы вы использовали emacs, все было бы просто: M-x mark-whole-buffer и M-x indent-region.

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