Jawaban:
Ini mungkin buffer awal, yang dapat dinamai. Dari bantuan:
menggaruk
Berisi teks yang bisa dibuang kapan saja. Itu disimpan ketika menutup jendela, itu harus dihapus secara eksplisit. Pengaturan:>
: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.
Ini dapat ditemukan di :help special-buffers.
:editfile untuk mengedit file, buffer baru dibuat secara otomatis. Buffer kosong dapat dibuat dengan memasukkan :enewatau :newatau :vnew. Dari Vim buffer FAQ: vim.fandom.com/wiki/Vim_buffer_FAQ
:helpgrep scratchmengubahnya sebagai salah satu dari 10 (dalam instalasi saya) hasil.
Saya ingat tip vim (yang telah dimigrasi ke vim.wikia) pada subjek.
Versi terbaru dari fungsi yang saya gunakan untuk membuat buffer awal juga menetapkan:
'buflisted' ke false'readonly'(Dari plugin perpustakaan VimL saya: 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
Buffer 'awal' hanyalah istilah informal untuk tempat mengetik konten sementara yang sewenang-wenang.
Mengikuti jawaban yang diterima dan pertanyaan lain, saya membuat fungsi berikut di vimrc saya.
Fungsi ini membuat buffer kosong di jendela saat ini dan menamainya 'awal'. Buffer awal tidak dilindungi jika Anda mencoba untuk berhenti. Itu akan dibuang tanpa diminta bahkan dengan perubahan yang belum disimpan jika Anda keluar dari Vim atau menghapusnya ( :bw).
Masukkan fungsi ini di vimrc Anda. Untuk membuat buffer scratch gunakan :call Scratch().
function! Scratch()
split
noswapfile hide enew
setlocal buftype=nofile
setlocal bufhidden=hide
"setlocal nobuflisted
"lcd ~
file scratch
endfunction
Anda dapat menguji ini dengan cepat dengan menarik garis lalu :@". Anda kemudian dapat mencoba :call Scratch().
Pemisahan digunakan sehingga buffer Anda saat ini tidak terpengaruh ketika Anda membuat buffer awal.
(Jika Anda lebih suka menghilangkan splitdari fungsi maka buffer Anda saat ini akan "tersembunyi" (tidak lagi di jendela) ketika Anda membuat buffer awal. Vim masih akan berhenti dan meminta Anda jika Anda mencoba untuk berhenti dengan perubahan yang belum disimpan di dalamnya. penyangga).
Buffer awal biasanya memiliki direktori kerja buffer yang sama dengan ketika Anda memanggil fungsi Scratch. Saya telah menyertakan baris komentar untuk mengubah direktori kerja buffer awal ke rumah. Ini untuk mereka yang memiliki garis status lucu yang dapat menampilkan jalur direktori saat ini sebagai jalur penyangga. Atau hanya untuk mereka yang menyukainya.
Anda dapat mengatur buffer awal untuk "terdaftar" atau "tidak terdaftar" (terdaftar secara default). Jika Anda membuatnya tidak tercantum Anda tidak akan melihatnya dalam Anda :buffersdaftar, tetapi akan berada di :buffers!. Batalkan komentar pada nobuflistedbaris jika Anda lebih suka tidak terdaftar. Tercantum atau tidak terdaftar, Anda selalu dapat mengubah buffer awal Anda :b scratch. Membuat buffer awal terdaftar membuatnya sedikit lebih mudah diakses. Misalnya :sballakan memasukkannya dalam split.
Jika Anda menggunakan :bw(buffer wipe) pada buffer awal, Vim akan menghapus konten dan menghapus buffer tanpa peringatan. Jika Anda menggunakan :bd(hapus buffer) pada buffer awal, Vim akan menjatuhkan konten tanpa peringatan dan membuat buffer tidak terdaftar.
Anda dapat membuat beberapa buffer awal. Vim mulai mengeluh tetapi Anda masih berakhir dengan yang lain.
buftype=hide sebelum mengatur nama maka mengubah direktori tidak diperlukan, karena nama buffer tidak akan "ditangani seperti nama file." Juga, mungkin layak disebutkan 'nobuflisted', yang mencegah buffer muncul di output :ls. Anda semacam menyinggungnya, tetapi tidak menyebutkannya secara eksplisit.
buftype=hidememang omong kosong, dan ya, saya sebenarnya berbicara tentang buftype=nofile:). Tapi saya tidak bisa mereproduksi perilaku yang Anda gambarkan, dan masih percaya pernyataan Vim buffer names are always filenamesitu salah. Jika saya menghapus cdbaris dari fungsi Anda dan kemudian menjalankannya, tidak ada jalur di statusline saya atau di output echo bufname('%')saya bertanya-tanya apakah mungkin ini adalah masalah dengan statusline Anda daripada nama buffer. Apa 'statusline'pilihan Anda diatur?
statuslinemenggunakan sesuatu seperti expand(&buftype == 'nofile' ? '%' : '%:p:~:h'), tapi saya pikir sekarang kita masuk ke ranah preferensi pribadi. Jika Anda memutuskan untuk tetap menggunakan solusi direktori perubahan, maka mungkin lebih baik digunakan :lcduntuk membatasi perubahan pada jendela yang dimaksud, tetapi sekali lagi itu terserah Anda. Bagaimanapun, saya pikir ini adalah jawaban yang bagus. +1!
:hperintah mana yang digunakan untuk mengakses bantuan ini?