2015-07-13 25 views
8

Bağımlılıkları php sınıfına eklemek için vimrc'mdeki bir işlevi çalıştırmaya çalışıyorum.
Komut dosyası, sınıfımın yapısında bir parametre türü ipucu girmeli ve bu parametrenin sonucunu yerel sınıfın bir özelliğine atamalıdır.
Linux kullanıyorum ve bazı yazılarda, bu türdeki karakterlerin Linux'ta kullanılmadığını öğrendim. Ama Mac için.Vimrc işlevindeki hata karakterleri

fonksiyonu:

Error detected while processing function AddDependency: 
line 10: 
E115: Missing quote: 'normal :%s/(, /(/g 
E15: Invalid expression: 'normal :%s/(, /(/g 
Press ENTER or type command to continue 

tam olarak bu özel karakter nedir:

function! AddDependency() 
    let dependency = input('Var Name: ') 
    let namespace = input('Class Path: ') 

    let segments = split(namespace, '\') 
    let typehint = segments[-1] 

    exec 'normal gg/construct^M:H^Mf)i, ' . typehint . ' $' . dependency . '^[/}^>O$this->^[a' . dependency . ' = $' . dependency . ';^[?{^MkOprotected $' . dependency . ';^M^[?{^MOuse ' . namespace . ';^M^[' 

    " Remove opening comma if there is only one dependency 
    exec 'normal :%s/(, /(/g' 

endfunction 

Ve ben olsun bu işlevi çalıştırmayı denediğinizde?
Bunu nasıl düzeltebilirim ve bu karakter hakkında bilgi edinmek için bir referans var mı? ters eğik çizgiden sonra bazı karakter eksikse bu sanki

Teşekkür peşin ..

+0

Neden satır 12'deki satırsonundaki alıntı var? – Zach

+0

Üzgünüm ... Bunu kaldırdım. –

+0

Bir yan notta: 'exec' normaline ihtiyacınız yok:% s/(,/(/ g '', sadece yazınız% s/(,/(/ g) yerine – lcd047

cevap

1

Sadece sorunu çözmek gerekir ^M ve ^[ sorunları tespit ile birlikte

:%s/(, /(/g 

yapmalıdır.

-1
let segments = split(namespace, '\') 

bana görünüyor. Bunun yerine

exec 'normal :%s/(, /(/g' 

ait

+1

Nope, ters eğik çizgi tek tırnak içinde özel bir anlamı yoktur. Bakınız: help expr-'. – lcd047

İlgili konular