vim komutu için değişken içeriği nasıl bağımsız değişken olarak kullanabilirim?


12

örneğin varsayalım

:let foo=pattern

ve şimdi gerçekleştirmek istiyorum Ggrep patterama foodeğişmez bir patterdize yerine değişken kullanın .

:echo foo

çıktılar pattern, ancak

:Ggrep foo

sadece foo arar

GÜNCELLEME:

bir komut dizesi oluşturmak ve sonra çalıştırmak: üzerinde yürütmek bir çözüm değil, bir kesmek. Ve önemsiz olmayan değişken değerlerle kırılır.


nedir Ggrep(sermaye G?)?
akira

'fugutive' vim eklentisinden git grep
Vitaly Kushner

örnek komut yanlış. foo = 'desen' olsun. De ki: yürütmek bir kesmek tamamen yanlış. İşte çözüm:
Vim'in

Yanıtlar:


2

Bu değişken hakkında değil ama belki vim kısaltma komutu yardımcı olabilir. Komut satırından deneyin:

:abbreviate foo pattern

Sonra

:Ggrep foo<space>

'Foo'yu' kalıbına 'tamamlayacak.


Şimdi koşmaya çalışın echo foo. echo patternDeğişken olmayan Opps . bu bir hack ve yanlış yönlendirmedir.
albfan

7

ne dersin:

:execute ':grep ' . foo

foo'nun içeriğinden nasıl düzgün bir şekilde kaçabilirim? ", ', /, \, vb. gibi özel karakterler içerebilir
Vitaly Kushner

1
@Vitaly Kushner: Bkz. ": Help escape ()" ve ": help fnameescape ()".
garyjohn

Ben kaçmayı biliyorum (), ama kaçmak için emin değilim
Vitaly Kushner

fnameescape () iyi değil, bir dosya adı argümanı değil, eklenti işlevine yönelik bir argüman. varsayalım I: let foo = "aaa \" bbbb'cccc "
Vitaly Kushner

1
Saçımı da bunun üzerinden çekiyorum. let xyz = tabpagenr()O zamanki gibi bir komut veremezsiniz tabnext xyz. Vim'in senaryo dili, modal ortamı kusursuz olduğu kadar kusurludur.
puk

2

:exeÇözümü beğenmezseniz, bir değişkenin içeriğini =ifade satırını kullanarak komut satırına "okuyabilirsiniz" . Örneğin, yazın :Ggrepardından basın Ctrl- rve sonra yazın =foove basın Enter. Değişkenin foo"desen" içerdiğini varsayarsak, komut satırınız şu şekilde görünmelidir:

:Ggrep pattern

Bunun avantajı, çalıştırılacak gerçek komutu görebilmeniz ve hatta Enterikinci kez basmadan önce değiştirebilmenizdir .

Görmek:

:help "=
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.