Yanıtlar:
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
.
:edit
bir dosyayı düzenlemek için dosya kullanırsanız, otomatik olarak yeni bir arabellek oluşturulur. Boş bir tampon giren oluşturulabilir :enew
ya da :new
ya da :vnew
. Vim arabelleğinden SSS: vim.fandom.com/wiki/Vim_buffer_FAQ
:helpgrep scratch
, (kurulumumda) 10 sonuçtan biri olarak ortaya çıkıyor.
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
'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, :buffers
listenizde görmezsiniz , ancak listenizde olur :buffers!
. Yorumsuz nobuflisted
bunu 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 :bw
içeriği silmek ve uyarmadan tampon kaldıracaktır Vim tampon sıfırdan üzerinde (tampon silin). Eğer kullanırsanız :bd
Vim 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.
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.
buftype=hide
gerç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 filenames
yanlış olduğuna inanıyorum . cd
Satı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ı?
statusline
bö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, :lcd
sö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!
:h
bu yardıma erişmek için hangi komut kullanılır?