2009-07-11 35 views
5

Tôi sao chép mã từ website matplotlib và dán vào trình soạn thảo Vim trong một thiết bị đầu cuối trên Mac OS X:Di chuyển lộn xộn khoảng trắng hàng đầu trong Vim trên Mac OS X

pylab_examples example code: ellipse_demo.py

Trong khi điều này hoạt động tốt trong 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() 

Tức là, tất cả mã đều được căn chỉnh đúng. Trong Vim nó trông như thế này:

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() 

Làm thế nào để khắc phục tình trạng khó chịu này? Liệu nó có liên quan gì đến các quy ước về nguồn cấp dữ liệu đường truyền/trả lại khác nhau trên máy Mac không?

Trả lời

17

Sử dụng lệnh :set paste trước khi dán văn bản. Điều này tắt autoindent cộng với những thứ khác mà có thể can thiệp với dán. Để khôi phục hoạt động bình thường, hãy sử dụng :set nopaste.

+0

dùng thử Greg - vẫn không hoạt động –

+0

Tôi cũng không chắc chắn nên đề xuất gì sau đó. Những gì bạn mô tả chính xác là vấn đề mà lệnh ': set paste' được thiết kế để giải quyết. Tôi sử dụng nó bất cứ khi nào tôi phải đối mặt với cùng một vấn đề và nó làm việc cho tôi. –

+0

khỏi nhận xét trước đó của tôi. Rõ ràng là quá muộn vào ban đêm ở London! Có nó hoạt động. Cảm ơn Greg tốt đẹp nhất. –

-1

Nếu bạn đang sử dụng các emacs, nó sẽ là một vấn đề đơn giản của M-x mark-whole-bufferM-x indent-region.

+5

Trái với tin phổ biến, "Sử dụng cái gì khác" hiếm khi là giải pháp. –

+0

Cảm ơn jrockway haha. Đáng buồn là các thụt lề tăng dần lên trên mỗi dòng nên không giúp được gì, hoặc tôi đã sử dụng

+1

Và, như chúng ta thấy, vì anh ta sử dụng Vim, nó dễ dàng như ': set paste'. – Telemachus

1

Nếu bạn phải, bạn chỉ có thể sử dụng 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 

nên làm việc.

+0

yep hoạt động hoàn hảo. –

+0

Tôi khuyên bạn nên sử dụng: đặt phiên bản dán, đặc biệt là bây giờ mà tôi biết về nó, nhưng tại thời điểm tôi bắt đầu đăng bài tôi không biết nó làm việc cho bạn, vì vậy tôi đăng nó chỉ trong trường hợp. –

+1

Tôi luôn sử dụng phương pháp này trong quá khứ, nhưng sau khi tìm hiểu về "đặt dán", tôi cũng sẽ chuyển đổi. –

2

Hoặc sử dụng :r!pbpaste - chèn đầu ra từ lệnh pbpaste (xảy ra là bộ đệm dán hiện tại) trong dòng hiện tại; không cần phải lộn xộn về với các chế độ và như vậy.

+1

Sử dụng lệnh bên ngoài quá mức cần thiết như: đặt và "+ p làm chính xác điều tương tự. – DrAl

+2

Không có trong OS X; xem nhận xét của tôi về câu trả lời của bạn. –

0

Cũng như lệnh :set paste đã được đề cập, bạn luôn có thể làm "+p để dán nội dung của khay nhớ tạm vào vị trí hiện tại. Tôi đã không sử dụng Vim trên Mac OS X, nhưng tôi chắc chắn rằng điều này vẫn còn hợp lệ. Trên Linux, có "*p cho khay nhớ tạm chọn và "+p cho khay nhớ tạm và sao chép; trên Windows, cả hai đều trỏ đến clipboard hệ thống. "+p là một chút của một lệnh lẻ lúc đầu, nhưng một khi bạn đang sử dụng để sử dụng loại lệnh này, nó sẽ trở nên rất nhanh chóng. Hoặc bạn có thể sử dụng :put + để làm điều tương tự.

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

Trên OS X điều này dường như không hoạt động; kiểm tra nó, thanh ghi '+' không kéo từ clipboard hệ thống, chỉ từ thanh ghi bên trong của vi.Tôi đã thử cả 'vi' và' vim', chạy trong cả xterm và bản gốc của Apple Terminal.app; ': r! pbpaste 'hoạt động, tích hợp đăng ký của vi không. –

+0

Đây là trường hợp cho macVim, nhưng tôi nghĩ rằng nó không phải là đăng ký + trong dòng lệnh vim –