Karalama penceresi nedir?


11

Bazen adıyla açık bir pencere görüyorum scratch.

Bir çeşit geçici tampon / pencere olduğunu biliyorum.

Nasıl sandık yapabilirim?

:h scratch hiçbir şey döndürmez.

Yanıtlar:


11

Muhtemelen adlandırılabilen bir çizik tamponudur. Yardımdan:

kaşımak

İstediğiniz zaman atılabilecek metinler içerir. Pencereyi kapatırken tutulur, açıkça silinmelidir. Ayarlar:>

      :setlocal buftype=nofile
      :setlocal bufhidden=hide
      :setlocal noswapfile
  The buffer name can be used to identify the buffer, if you give it a meaningful name.

Bu, içinde bulunabilir :help special-buffers.


1
:hbu yardıma erişmek için hangi komut kullanılır?
wizzup

2
: h tampon, sonra "Özel tamponlar" ile aşağı okuyun. Doğru yoldaydın.
wbogacz

Vim komutlarından herhangi birini kullanarak bir dosyayı açtığınızda, otomatik olarak bir arabellek oluşturulur. Örneğin, :editbir dosyayı düzenlemek için dosya kullanırsanız, otomatik olarak yeni bir arabellek oluşturulur. Boş bir tampon giren oluşturulabilir :enewya da :newya da :vnew. Vim arabelleğinden SSS: vim.fandom.com/wiki/Vim_buffer_FAQ
NeilG

2
@wizzup :helpgrep scratch, (kurulumumda) 10 sonuçtan biri olarak ortaya çıkıyor.
Zengin

2

Konuyla ilgili bir vim ipucunu (vim.wikia'ya taşındı) hatırlıyorum.

Çizik tamponları oluşturmak için kullandığım işlevin en son sürümü de şunları ayarlar:

  • 'buflisted' yanlış
  • 'readonly'

(VimL kütüphane eklentimden: lh-vim-lib)

function! lh#buffer#scratch(bname, where) abort
  try
    set modifiable
    " The next function takes care of working around this damn E36
    call lh#window#create_window_with(a:where.' sp '.escape(substitute(a:bname, '\*', '...', 'g'), '#%'))
  catch /.*/
    throw "Can't open a buffer named '".a:bname."'!"
  endtry
  setlocal bt=nofile bh=wipe nobl noswf ro
  return bufnr('%')
endfunction

2

'Karalama' arabelleği, rastgele geçici içerik yazabileceğiniz bir yerin resmi olmayan bir terimidir.

Kabul edilen cevabı ve başka bir soruyu takiben, vimrc'de aşağıdaki işlevi yarattım.

İşlev, geçerli pencerede boş bir arabellek oluşturur ve 'çizik' olarak adlandırır. Çıkmaya çalışırsanız çizik arabelleği korunmaz. Vim'den çıkar veya silerseniz ( :bw) kaydedilmemiş değişikliklerle bile sorulmadan atılır .

Bu işlevi vimrc'nize koyun. Bir çizik tamponu oluşturmak için kullanın :call Scratch().

function! Scratch()
    split
    noswapfile hide enew
    setlocal buftype=nofile
    setlocal bufhidden=hide
    "setlocal nobuflisted
    "lcd ~
    file scratch
endfunction

Hatları sorarak hızlıca test edebilirsiniz ve sonra :@". Daha sonra deneyebilirsiniz :call Scratch().

Bölme kullanılır, böylece çizme arabelleğini oluşturduğunuzda geçerli arabelleğiniz etkilenmez.

(İşlevinden atlamayı tercih ederseniz split, çizik arabelleğini oluşturduğunuzda geçerli arabelleğiniz "gizli" (artık bir pencerede değil) olacaktır. Vim durur ve kaydedilmemiş değişikliklerle çıkmaya çalışırsanız sizi uyarır. tampon).

Scratch işlevini çağırdığınızda, scratch buffer normalde bulunduğunuz tamponun çalışma dizinine sahip olacaktır. Evde karalama çalışma dizini değiştirmek için yorum satırı dahil ettik. Bu, geçerli dizinin yolunu arabellek yolu olarak görüntüleyebilecek komik durum satırlarına sahip olanlar içindir. Ya da sadece onu tercih edenler için.

Sıfırlama arabelleğini "listelenmiş" veya "listelenmemiş" olarak ayarlayabilirsiniz (varsayılan olarak listelenir). Liste dışı yaparsanız, :bufferslistenizde görmezsiniz , ancak listenizde olur :buffers!. Yorumsuz nobuflistedbunu liste dışı bırakılır tercih ediyorsanız hattı. Listelenmiş veya listelenmemiş, her zaman sıfırlama tamponunuza her zaman değiştirebilirsiniz :b scratch. Çizik tamponun listelenmesi biraz daha erişilebilir olmasını sağlar. Örneğin :sball, bunu bir bölünmeye dahil eder.

Eğer kullanırsanız :bwiçeriği silmek ve uyarmadan tampon kaldıracaktır Vim tampon sıfırdan üzerinde (tampon silin). Eğer kullanırsanız :bdVim tampon sıfırdan üzerinde (silme tampon) uyarmadan içeriğini bırakın ve tampon liste dışı yapacaktır.

Sen edebilirsiniz birden çizik tamponlarını oluşturun. Vim şikayet etmeye başlar, ancak yine de başkaları ile sonuçlanırsınız.


2
Yürütmenin gerekli olmadığı. Fonksiyonunuz sadece enew vs. çalıştırabilir
D. Ben Knoble

1
Adı ayarlamadan buftype=hide önce ayarlarsanız , dizinin değiştirilmesi gerekmez, çünkü arabellek adı "bir dosya adı gibi ele alınmaz". Ayrıca, 'nobuflisted'tamponun çıktısında görünmesini engelleyen söz etmeye değer olabilir :ls. Bir şekilde buna itiraz ettiniz, ancak açıkça bahsetmediniz.
Zengin

Yorumunuz için teşekkürler, @ D.BenKnoble. Tavsiyenizdeki işlevi temizledim.
NeilG

1
buftype=hidegerçekten saçmalık ve evet, aslında hakkında konuşuyordum buftype=nofile:). Ancak tanımladığınız davranışı yeniden oluşturamıyorum ve yine de ifadenin Vim buffer names are always filenamesyanlış olduğuna inanıyorum . cdSatırı işlevinizden kaldırır ve çalıştırırsam, durum satırımda veya çıkışında herhangi bir yol yoktur echo bufname('%'), belki de bu durumun arabellek adı yerine durum satırınızla ilgili bir sorun olup olmadığını merak ediyorum. Seçenekiniz ne olarak 'statusline'ayarlandı?
Zengin

1
Aha! Anladım sevindim! Eğer ben olsaydım, Scratch işlevindeki dizini değiştirmemeyi tercih ederdim, bunun yerine statuslineböyle bir şey kullanmayı değiştirirdim expand(&buftype == 'nofile' ? '%' : '%:p:~:h'), ama şimdi kişisel tercih alemlerine girdiğimizi düşünüyorum. Değişiklik dizini çözümüne sadık kalmaya karar verirseniz, :lcdsöz konusu pencerede yapılan değişiklikleri sınırlamak için kullanmak daha iyi olabilir , ancak yine de size kalmış. Her neyse, bunun harika bir cevap olduğunu düşünüyorum. 1!
Zengin
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.