2009-07-11 17 views
5

私は、Mac OS X上の端末でVimのエディタにウェブサイトmatplotlib&ペーストからコードをコピーしています:これはBBEditで正常に動作している間のMac OS X上でのVimで厄介先頭の空白を削除し

pylab_examples example code: ellipse_demo.py

`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での異なるキャリッジリターン/改行規則と関係がありますか?

答えて

17

テキストを貼り付ける前に​​コマンドを使用してください。これは、自動インデントと、貼り付けを妨げる可能性のある他のさまざまなものをオフにします。通常の操作に戻すには、:set nopasteを使用してください。

+0

それを試してみました。グレッグ - まだ動作しません。 –

+0

これから何を提案するのかよくわかりません。あなたが記述しているのは、正確には、 ':set paste'コマンドが解決するように設計されているという問題です。私は同じ問題に直面しているときはいつでもそれを使用し、それは私のために働く。 –

+0

その前のコメントは私のものです。ここロンドンの夜は、明らかに遅すぎる!それは働いた。 Gregさん、ありがとうございました。 –

-1

emacsを使用していた場合は、M-x mark-whole-bufferM-x indent-regionという単純な問題になります。

+5

一般的な考え方とは逆に、「何か他のものを使う」ことはめったに解決策ではありません。 –

+0

ありがとうございましたjrockway haha​​。悲しいことにインデントは各行でインクリメントして大きくなるので、助けにならない、あるいは私はVimの

+1

そして、私たちが見るように、彼はVimを使っているので、 ':set paste'と同じくらい簡単です。 – Telemachus

1

あなたがしている場合は、あなただけの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

うんも完全に動作します。 –

+0

私は:貼り付けのバージョンを設定することをお勧めします。特に私はそれについて知っていますが、投稿を開始した時点で私はあなたのために働いていたとは知らなかったので、 –

+1

私は過去にこの方法をいつも使っていましたが、「ペーストを設定する」ことを学んだ後、私はおそらく切り替えるでしょう。 –

2

:r!pbpaste - pbpasteコマンド(現在のペーストバッファになる)の出力を現在の行の下に挿入します。モードなどを混乱させる必要はありません。

+1

外部コマンドを使用すると、putと "+ pはまったく同じことをします。 – DrAl

+2

OS Xにはありません;答えに私のコメントを参照してください –

0

すでに言及した:set pasteコマンドと同様に、いつでも"+pを実行して、クリップボードの内容を現在の場所に貼り付けることができます。私はMac OS XでVimを使っていませんが、これはまだ有効です。 Linuxの場合、選択クリップボードには、コピー&ペーストクリップボードには"+pがあります。 Windowsでは、両方ともシステムのクリップボードを指しています。 "+pは最初は奇妙なコマンドですが、このタイプのコマンドを使用することに慣れてしまうと非常に高速になります。あるいは、同じことを行うには:put +を使用することもできます。

:help quote 
:help put 
:help :put 
:help registers 
+1

OS Xではこれはうまくいかないようです;私は、xtermとAppleのネイティブのTerminal.app; 'r!pbpasteの両方で実行されている' vi'と 'vim'の両方を試しましたが、' + 'レジスタはシステムのクリップボードから引き出されませんでした。 'は動作しますが、viのレジスタ統合はありません。 –

+0

これはmacVimの場合ですが、コマンドラインのvimでは+レジスタではないと思います –

関連する問題