it-swarm.asia

نسخ جميع الخطوط إلى الحافظة

هل هناك أي طريقة لنسخ جميع الخطوط من ملف مفتوح إلى الحافظة في السادس المحرر. حاولت yG لكنه لا يستخدم الحافظة لتخزين هذه الخطوط.

فهل هذا ممكن؟

487
Xinus

يجب عليك حذف النص إلى * أو +السجلات :

gg"*yG

تفسير:

  • gg للحصول على المؤشر إلى الحرف الأول من الملف
  • "*y لبدء أمر yank في السجل * من السطر الأول ، حتى ...
  • G للذهاب في نهاية الملف
564
CMS

استعمال:

:%y+

لنزع كل الخطوط.

تفسير:

  • % للإشارة إلى الأمر التالي للعمل على جميع الخطوط
  • y لإلغاء تلك الخطوط
  • + للنسخ إلى حافظة النظام

NB: في Windows ، + و * متساويان انظر هذه الإجابة .

612
Rook

على ماك

  • انسخ الجزء المحدد: حدد النص بصريًا (اكتب v أو V في الوضع العادي) واكتب :w !pbcopy

  • انسخ الملف بأكمله :%w !pbcopy

  • الماضي من الحافظة :r !pbpaste

70
Brian

الحافظة هي العازلة +. لنسخ إلى الحافظة ، القيام به "+y و [الحركة].

وبالتالي، gg"+yG سوف ينسخ الملف بأكمله.

وبالمثل ، للصق من الحافظة ، "+p

48
Tordek

هناك طريقة سهلة أخرى لنسخ الملف بأكمله إذا كنت تواجه مشكلات في استخدام VI ، وهي فقط بكتابة "اسم ملف القط". سوف يردد الملف على الشاشة ومن ثم يمكنك التمرير لأعلى ولأسفل ونسخ/لصق.

36
Zack

هذا ما أقوم به لإخراج الملف بالكامل:

ggVGy
25
EmilianoGNFNR

(ردًا على @ rshdev ، ولتجنب الاضطرار إلى إعادة ترجمة vim باستخدام + xterm_clipboard لكلnelstrom في التعليقات على البروتوكول الاختياري)

هناك برنامج يسمى xclip يعمل مثل putclip على Ubuntu 11:

:%!xclip -sel clip
u

لم يتم تثبيته بشكل افتراضي. لتثبيت ، استخدام:

Sudo apt-get install xclip
10
Stew

على Ubuntu 12

قد تحاول تثبيتvim-gnomeالحزمة:

Sudo apt-get install vim-gnome

جربته ، لأن vim --version أخبرني أنه سيحتوي على العلامة xterm_clipboard معطل (يشار إليه بواسطة/) ، وهو أمر ضروري لاستخدام وظيفة الحافظة.

-> تثبيت vim-gnome الحزمة على Ubuntu 12 أيضًا تثبيت إصدار قائم على وحدة التحكم من vim ، وقد تم تمكين هذا الخيار (المشار إليها بواسطة + قبل علامة xterm_clipboard)

على Arch Linux

يمكنك تثبيتvim-clipboardلنفس السبب.

9
Arch Linux Tux

جربت بعض الأوامر التي ذكرها الأشخاص أعلاه. لا شيء يعمل. ثم حصلت على أبسط منهم جميعا.

الخطوة 1: vi <filename>
الخطوة 2: انقر بزر الماوس الأيمن على شريط العنوان في نافذة المعجون
الخطوة 3: حدد "مسح scrollback" (لتجنب نسخ بقية جلسة SSH)
الخطوة 4: انقر بزر الماوس الأيمن مرة أخرى وحدد "نسخ الكل إلى الحافظة".

5
Abhinav Deshpande

إذا كنت تستخدم Vim في الوضع المرئي ، يتم تطبيق مفاتيح القص واللصق القياسية أيضًا ، على الأقل مع Windows.

  • CTRLA يعني "بمناسبة الملف بأكمله.
  • CTRLC يعني "نسخ التحديد.
  • ESC يعني "إلغاء التحديد ، لذلك لا يحل ضغط المفتاح التالي محل الملف بأكمله :-)

ضمن محطة Ubuntu (Gnome) على الأقل ، تعمل النسخة القياسية أيضًا (CTRLSHIFTC، على الرغم من عدم وجود اختصار قياسي للوحة المفاتيح لـ select all (بخلاف ALTE تليها A).

5
paxdiablo

يمكنك الضغط على gg لتحديد موقع المؤشر الخاص بك إلى بداية الملف ، ثم الضغط على yG لنسخ كل المحتوى من البداية إلى النهاية (تقع G) إلى buffer. حظ سعيد!

5
gameboy90

يمكنك استخدام الأمر "cat" لفتح الملف واستخدام الماوس للنسخ

5
Pham Luan

gVim:

:set go=a

ggVG

انظر :help go-a:

'a' Autoselect:  If present, then whenever VISUAL mode is started,
 or the Visual area extended, Vim tries to become the owner of
 the windowing system's global selection.  This means that the
 Visually highlighted text is available for pasting into other
 applications as well as into Vim itself.  When the Visual mode
 ends, possibly due to an operation on the text, or when an
 application wants to paste the selection, the highlighted text
 is automatically yanked into the "* selection register.
 Thus the selection is still available for pasting into other
 applications after the VISUAL mode has ended.
     If not present, then Vim won't become the owner of the
 windowing system's global selection unless explicitly told to
 by a yank or delete operation for the "* register.
 The same applies to the modeless selection.
3
kev

:%y a Yanks بكافة المحتويات في المخزن المؤقت لـ vim ، سيؤدي الضغط على p في وضع الأوامر إلى لصق المحتوى الذي تم حذفه بعد السطر الذي يقف عليه المؤشر حاليًا.

3
Ma'moon

حسنًا ، كل هذه الطرق مثيرة للاهتمام ، ولكن كمبرمج كسول أستخدم yank all line باستخدام توليفة من الرقم + y

على سبيل المثال لديك ملف التعليمات البرمجية المصدر مع ما مجموعه 78 خطوط ، يمكنك القيام به على النحو التالي:

  1. gg للحصول على المؤشر في السطر الأول
  2. أدخل 78 + y -> ينتزع 78 سطرًا أسفل المؤشر والخط الحالي
2
arfo

إذا كانت أصابعك الافتراضية لـ CTRL-A CTRL-C ، فجرّب التعيينات من $VIMRUNTIME/mswin.vim.

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y

" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

لقد قمت بتعيينهم على <Leader><C-a> و <Leader><C-c>.

2
go2null

لم يكن هناك مفهوم "الحافظة" في Bill Joy's vi لذلك لا أعتقد أن هناك طريقة مضمنة للقيام بذلك.

ميزة النسخ التلقائي لأي شيء في الحافظة من gVim أسهل أو استخدام برنامج خارجي عبر:!

ل Cygwin فييم يمكنني استخدامها

:%!putclip
u

ربما أوبونتو لديه تطبيق CLI مثل putclip؟

2
rshdev

قم بنسخ الملف بأكمله داخل vim أو علامات التبويب الخاصة به

y G 

ثم انتقل إلى علامة تبويب ولصقها

p

وخفض استخدام الملف بأكمله

d G
2
Abdul Basit

إليك أمر خريطة لتحديد الكل إلى الحافظة باستخدام CTRL+a:

"
" select all with control-a
"
nnoremap <C-a> ggmqvG"+y'q

قم بإضافته إلى . vimrc وأنت على ما يرام ...

1
jahroy

لقد أنشأت وظيفة لأداء هذا الإجراء ، ضعه على ~/.vimrc الخاص بك.

fun! CopyBufferToClipboard()
    %y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()

OBS: إذا كنت تستخدم neovim ، فأنت بحاجة أيضًا إلى بعض مدير الحافظة مثل xclip. لمزيد من المعلومات ، اكتب neovim :h checkhealth

من المهم أيضًا أن نذكر أنه لن يتم دائمًا نسخ y بسيطًا إلى الحافظة ، من أجل جعل كل نسخة تلقائية + wich هي محاولة تسجيل "Clipboard": :set clipboard=unnamed,unnamedplus. للحصول على معلومات مور ، انظر: :h unnamed.

هنا مزيد من المعلومات حول vim wikia.

0
SergioAraujo

أعلم أن عشر سنوات يجب أن تتم تسويتها ، لكن الإجابات الأولى والثانية لم تنجح بالنسبة لي لذلك استمررت في الحفر. على Redhat (خادم بعيد) - نظام التشغيل Windows 10 (الجهاز المحلي) ، إذا لم تتمكن من تحديد كل شيء باستخدام الماوس ، فأنت عالق لأن النسخ المعتادة لا تعمل بين حافظة التحكم عن بعد والجهاز المحلي.

لذلك ، للنسخ على Linux البعيد ولصقه على Windows المحلي ، حدد المخزن المؤقت الأساسي مع * والقيام yank مزدوجة لطيفة

استعمال gg"*yy.

0
Lefty G Balogh

لقد أضفت السطر التالي إلى بلدي .vimrc

nnoremap <F5> :%y+<CR>

هذا يسمح لي بنسخ كل النص في Vim إلى الحافظة بالضغط على F5 (في وضع الأوامر).

0
aks