WORD'lerin tamamlanması


13

<C-p>ve <C-n>mevcut belgede bulunan kelimelerin tamamlanmasına izin verir.

Bazı notlar alıyorum ve söz yazıyorum {0,1}^nve (E,D)birçok kez. Bunlar birkaç kelimeden oluşan WORD'ler.

WORD'leri <C-p>ve <C-n>(veya ilgili diğer ins-completionkomutlarla) tamamlamanın bir yolu var mı ?


1
Bunun :abbreviateyerine kullanarak daha iyi olabilirsiniz . Örneğin, :ab 01n {0,1}^nkomutu verin. Ardından, 01nEkle modunda bağımsız bir sözcük olarak her yazdığınızda, bu sözcük genişler {0,1}^n.
200_success

@ 200_success, teşekkür ederim. Kısaltmaları düşünmüştüm ama yine de bunun mümkün olup olmadığını bilmek istedim ins-completion.
Gonçalo Ribeiro

Yanıtlar:


5

İle mod tamamlama ekle Ctrl-n

Kendi fonksiyonunuzu yazmak dışında WORD tamamlama yapabilir misiniz bilmiyorum (omnifunc gibi). Ancak, kelimelerinizle eşleşecek bir kelimeyi genişletmenin sakıncası yoksa bu karakterleri 'iskeyword' e ekleyebilirsiniz.

Örneğin, 'iskeyword'üm varsayılan olarak

iskeyword=@,48-57,_,192-255

Daha sonra buna ek olarak yukarıdaki ek karakterleri ayarladım

:set iskeyword=@,48-57,_,192-255,{,},,,(,),^

Bu ekler {, }, ,, (, ), ve ^bir kelime oluşturan karakter (zaten yaptıklarını ek olarak)

Bundan sonra, yazma {Ctrl-nişlemi tamamlanır {0,1}^n(yalnızca verdiğiniz iki örneği içeren bir dosyada)

Not: Aşağıdaki gibi :set iskeyword+=yalnızca ek öğelerle yapmak daha iyi olur :

:set iskeyword+={,},,,(,),^

Bu şekilde, mevcut ayara yeni karakterler ekleyerek başka bir anahtar kelimeyi oluşturan her şeyi bırakmış olursunuz.

Kısaltmalarla genişletme

Orijinal sorunun bir parçası olmasa da, benzer başka bir (ish) işlev, nvi veya Vim'in kısaltma işlevini kullanmaktır. Anahtar kelime tamamlama işleminden farklı olarak, kısaltmaların son metin gibi görünmesi gerekmez. Ayrıca, anahtar kelime tamamlamanın aksine, kısaltmalar yalnızca siz sormak yerine otomatik olarak genişler. Hedefinize ve kullanımınıza bağlı olarak, bu çok fazla yazım kaydedebilir ve tamamlama istemeden çok fazla metin yazmanıza izin verir.

Kısaltmalar küçük bir anahtar kelime kümesi için iyidir ve bunları önceden tanımlayabildiğinizde (metninizden kelime tamamlama gibi keşfedilmezler).

Kısaltmaların arkasındaki temel fikir, bir WORD'ü başka bir metinle ilişkilendirmeniz ve düzenleyicinin bu WORD'yi yazdığınızı her algılayışında (yani, yazdığınız metin boşlukla çevrilidir, burada tamamlama eylemi boşluk ekler. anahtar kelime veya bırakma ekleme modu), diğer metinle değiştirilir.

Diyelim ki dosyanız {0,1}^nçok şey içeriyor ve dosyada başka varyasyonlar yok. Biraz parmak gerdirme yazmak, belki de sadece yazmak 01nveya myvaluegenişletmek istersiniz {0,1}^n, ancak sadece tek başına bir kelime olduğunda 01nveya myvaluebaşka bir kelime olduğunda (yani, başka bir kelimede görünüyorsa, değiştir).

NV'de bunu yapabilirsiniz :abbrev 01n {0,1}^n. Aynısını Vim'de de yapabilirsiniz, ancak :iabbrev 01n {0,1}^ngenişletmeyi yalnızca ekleme moduna kısıtlamak için kullanmanızı öneririm .

Ardından, metniniz varsa (burada |imleci temsil eder)

We find that the value 01n|

Sonra da vurmak Escya Spaceya Tabya da başka imleçlerle, metin yerini alır ve siz (boşluk kullanmak için örnek) vardır

We find that the value {0,1}^n |

ve kesintisiz yazmaya devam edebilirsiniz.

Bu genellikle ortak yazım hatalarını otomatik olarak düzeltmek için kullanılır (örn. 'Teh' 'i' the 'olarak değiştirmek), ancak eşlemelerin vaktinden önce ayarlanmasının sakıncası olmadığını varsayarak, kullanım durumunuz için de aynı derecede yararlı olabilir.


Bana öyle geliyor ki :set iskeyword+={,},,,(,),^beklendiği gibi çalışıyor.
Karl Yngve Lervåg

1
Gerçekten de öyle. Son kez denediğimde, Vim bana bir sözdizimi hatası olduğunu söyledi. Başka bir yerde olmalı. Cevabım güncelleniyor.
John O'M.

@ JohnO'M. abbreviatebu işe nasıl daha uygun olabileceğine dair bir referans ekleyebilir misiniz ?
Gonçalo Ribeiro

@ GonçaloRibeiro bitti. Umut ediyorum bu yardım eder.
John O'M.
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.