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
.
:edit
file untuk mengedit file, buffer baru dibuat secara otomatis. Buffer kosong dapat dibuat dengan memasukkan :enew
atau :new
atau :vnew
. Dari Vim buffer FAQ: vim.fandom.com/wiki/Vim_buffer_FAQ
:helpgrep scratch
mengubahnya 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 split
dari 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 :buffers
daftar, tetapi akan berada di :buffers!
. Batalkan komentar pada nobuflisted
baris 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 :sball
akan 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=hide
memang 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 filenames
itu salah. Jika saya menghapus cd
baris 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?
statusline
menggunakan 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 :lcd
untuk membatasi perubahan pada jendela yang dimaksud, tetapi sekali lagi itu terserah Anda. Bagaimanapun, saya pikir ini adalah jawaban yang bagus. +1!
:h
perintah mana yang digunakan untuk mengakses bantuan ini?