यदि आप अपने सिस्टम-स्तरीय क्लिपबोर्ड में वर्तमान बफर फ़ाइल नाम रखना चाहते हैं, तो रजिस्टर को @ + में बदलने का प्रयास करें:
" relative path
:let @+ = expand("%")
" full path
:let @+ = expand("%:p")
" just filename
:let @+ = expand("%:t")
संपादित करें 20140421: मैं आमतौर पर इनका उपयोग करता हूं, इसलिए मैंने कुछ शॉर्टकट बनाए। लिनक्स विम्स जाहिरा तौर पर मैक विम्स की तुलना में थोड़ा अलग तरीके से काम करता है , इसलिए इसके लिए एक विशेष मामला भी है। यदि आप निम्नलिखित को अपने में रखते हैं ~/.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
फिर उदाहरण <leader>cf
के लिए वर्तमान बफर के सापेक्ष पथ को कॉपी करेगा (डिफ़ॉल्ट लीडर बैकस्लैश ( \
) है)। मैं अक्सर फाइल पर कमांड चलाने या कमांड लाइन पर अन्य काम करने के लिए इनका उपयोग करता हूं। मैं अक्सर अंतिम फ़ाइल नाम / निर्देशिका नाम का उपयोग नहीं करता हूं।
आप <leader>cfr
सापेक्ष के लिए अधिक सहज मैपिंग पर विचार कर सकते हैं , <leader>cfa
पूर्ण के लिए, <leader>cff
केवल फ़ाइल नाम के लिए, <leader>cfd
निर्देशिका के लिए।