Câu trả lời:
Nó có lẽ là một bộ đệm đầu, có thể được đặt tên. Từ sự giúp đỡ:
vết trầy
Chứa văn bản có thể bị loại bỏ bất cứ lúc nào. Nó được giữ khi đóng cửa sổ, nó phải được xóa rõ ràng. Cài đặt:>
: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.
Điều này có thể được tìm thấy trong :help special-buffers
.
:edit
tệp để chỉnh sửa tệp, bộ đệm mới sẽ tự động được tạo. Một bộ đệm trống có thể được tạo ra bằng cách nhập :enew
hoặc :new
hoặc :vnew
. Từ bộ đệm Vim Câu hỏi thường gặp: vim.fandom.com/wiki/Vim_buffer_FAQ
:helpgrep scratch
biến nó thành một trong 10 kết quả (trong phần cài đặt của tôi).
Tôi nhớ một mẹo vim (đã được chuyển sang vim.wikia) về chủ đề này.
Phiên bản mới nhất của chức năng tôi sử dụng để tạo bộ đệm đầu cũng thiết lập:
'buflisted'
thành sai'readonly'
(Từ plugin thư viện VimL của tôi: 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
Bộ đệm 'cào' chỉ là một thuật ngữ không chính thức cho một nơi để nhập nội dung tạm thời tùy ý.
Theo câu trả lời được chấp nhận và một câu hỏi khác, tôi đã tạo ra hàm sau trong vimrc của mình.
Hàm tạo một bộ đệm trống trong cửa sổ hiện tại và đặt tên là 'cào'. Bộ đệm đầu không được bảo vệ nếu bạn cố gắng thoát. Nó sẽ bị loại bỏ mà không cần nhắc ngay cả với những thay đổi chưa được lưu nếu bạn thoát Vim hoặc xóa nó ( :bw
).
Đặt chức năng này trong vimrc của bạn. Để tạo một bộ đệm đầu sử dụng :call Scratch()
.
function! Scratch()
split
noswapfile hide enew
setlocal buftype=nofile
setlocal bufhidden=hide
"setlocal nobuflisted
"lcd ~
file scratch
endfunction
Bạn có thể kiểm tra điều này một cách nhanh chóng bằng cách kéo các dòng và sau đó :@"
. Sau đó bạn có thể thử :call Scratch()
.
Một phần tách được sử dụng để bộ đệm hiện tại của bạn không bị ảnh hưởng khi bạn tạo bộ đệm đầu.
(Nếu bạn muốn bỏ qua split
chức năng thì bộ đệm hiện tại của bạn sẽ bị "ẩn" (không còn trong cửa sổ) khi bạn tạo bộ đệm đầu. Vim vẫn sẽ dừng và nhắc bạn nếu bạn cố thoát khỏi những thay đổi chưa được lưu trong đó đệm).
Bộ đệm đầu thông thường sẽ có cùng thư mục làm việc của bộ đệm bạn đang sử dụng khi bạn gọi hàm Scratch. Tôi đã bao gồm một dòng nhận xét để thay đổi thư mục làm việc bộ đệm đầu về nhà. Điều này dành cho những người có dòng trạng thái vui nhộn có thể hiển thị đường dẫn của thư mục hiện tại dưới dạng đường dẫn bộ đệm. Hoặc chỉ dành cho những người thích nó.
Bạn có thể đặt bộ đệm đầu thành "được liệt kê" hoặc "không được liệt kê" (được liệt kê theo mặc định). Nếu bạn làm cho nó không được liệt kê, bạn sẽ không thấy nó trong :buffers
danh sách của bạn , nhưng nó sẽ ở trong đó :buffers!
. Bỏ ghi chú nobuflisted
dòng nếu bạn muốn nó không được liệt kê. Được liệt kê hoặc không được liệt kê, bạn luôn có thể thay đổi bộ đệm đầu của bạn bằng :b scratch
mọi cách. Làm cho bộ đệm đầu được liệt kê làm cho nó dễ tiếp cận hơn một chút. Ví dụ :sball
sẽ bao gồm nó trong một tách.
Nếu bạn sử dụng :bw
(xóa bộ đệm) trên bộ đệm đầu, Vim sẽ xóa nội dung và xóa bộ đệm mà không có cảnh báo. Nếu bạn sử dụng :bd
(xóa bộ đệm) trên bộ đệm đầu, Vim sẽ bỏ nội dung mà không cảnh báo và làm cho bộ đệm không được liệt kê.
Bạn có thể tạo nhiều bộ đệm đầu. Vim bắt đầu phàn nàn nhưng cuối cùng bạn vẫn có thêm những người khác.
buftype=hide
trước khi đặt tên thì việc thay đổi thư mục là không cần thiết, vì tên bộ đệm sẽ không được "xử lý như tên tệp." Ngoài ra, có thể đáng nói 'nobuflisted'
, điều này ngăn bộ đệm hiển thị trong đầu ra của :ls
. Bạn đã ám chỉ nó, nhưng không đề cập rõ ràng.
buftype=hide
thực sự là vô nghĩa, và vâng, tôi đã thực sự nói về buftype=nofile
:). Nhưng tôi không thể tái tạo hành vi mà bạn mô tả và vẫn tin rằng tuyên bố đó Vim buffer names are always filenames
là không chính xác. Nếu tôi loại bỏ cd
dòng khỏi chức năng của bạn và sau đó chạy nó, không có đường dẫn nào trong dòng trạng thái của tôi hoặc trong đầu ra của echo bufname('%')
tôi tự hỏi liệu có lẽ đây là một vấn đề với dòng trạng thái của bạn chứ không phải là tên bộ đệm. 'statusline'
Tùy chọn của bạn được đặt là gì?
statusline
để sử dụng một cái gì đó như thế expand(&buftype == 'nofile' ? '%' : '%:p:~:h')
, nhưng tôi nghĩ bây giờ chúng ta đang ở trong vương quốc của sở thích cá nhân. Nếu bạn quyết định gắn bó với giải pháp thư mục thay đổi, thì có lẽ tốt hơn là sử dụng :lcd
để giới hạn các thay đổi đối với cửa sổ đang đề cập, nhưng một lần nữa điều đó tùy thuộc vào bạn. Nhưng dù sao, tôi nghĩ rằng đây là một câu trả lời tuyệt vời. +1!
:h
lệnh được sử dụng để truy cập vào trợ giúp này?