Nếu bạn muốn đặt tên tệp bộ đệm hiện tại vào bảng tạm ở cấp hệ thống, hãy thử thay đổi đăng ký thành @ +:
" relative path
:let @+ = expand("%")
" full path
:let @+ = expand("%:p")
" just filename
:let @+ = expand("%:t")
Chỉnh sửa 20140421: Tôi thường sử dụng những thứ này, vì vậy tôi đã tạo một số phím tắt. Linux Vims rõ ràng hoạt động hơi khác so với Mac Vims , vì vậy cũng có trường hợp đặc biệt. Nếu bạn đặt như sau trong ~/.vimrc
:
" copy current file name (relative/absolute) to system clipboard
if has("mac") || has("gui_macvim") || has("gui_mac")
" relative path (src/foo.txt)
nnoremap <leader>cf :let @*=expand("%")<CR>
" absolute path (/something/src/foo.txt)
nnoremap <leader>cF :let @*=expand("%:p")<CR>
" filename (foo.txt)
nnoremap <leader>ct :let @*=expand("%:t")<CR>
" directory name (/something/src)
nnoremap <leader>ch :let @*=expand("%:p:h")<CR>
endif
" copy current file name (relative/absolute) to system clipboard (Linux version)
if has("gui_gtk") || has("gui_gtk2") || has("gui_gnome") || has("unix")
" relative path (src/foo.txt)
nnoremap <leader>cf :let @+=expand("%")<CR>
" absolute path (/something/src/foo.txt)
nnoremap <leader>cF :let @+=expand("%:p")<CR>
" filename (foo.txt)
nnoremap <leader>ct :let @+=expand("%:t")<CR>
" directory name (/something/src)
nnoremap <leader>ch :let @+=expand("%:p:h")<CR>
endif
Sau đó, ví dụ <leader>cf
sẽ sao chép đường dẫn tương đối của bộ đệm hiện tại (nhà lãnh đạo mặc định là dấu gạch chéo ngược ( \
)). Tôi thường sử dụng chúng để chạy các lệnh trên một tệp hoặc làm những việc khác trên dòng lệnh. Tôi không thực sự sử dụng tên tệp / tên thư mục cuối cùng thường xuyên.
Bạn có thể xem xét các ánh xạ trực quan hơn như <leader>cfr
tương đối, <leader>cfa
đối <leader>cff
với chỉ tên tệp, <leader>cfd
cho thư mục.