هذا مهمل وجميع التغييرات المستقبلية ستكون على الفرع harpoon2
.
الحربة 2
الحالة : الدمج في الخط الرئيسي في 20 أبريل أو 9 يونيو (لطيف)
- الصورة مقدمة من بوب روست
لم يتم خبز هذا بشكل كامل، على الرغم من استخدامه من قبل العديد من الأشخاص. إذا واجهت أية مشكلات، أو شاهدت بعض التحسينات التي تعتقد أنها ستكون مذهلة، أو كان لديك بعض التعليقات حول Harpoon (أو أنا)، فقم بإثارة مشكلة!
:bnext
& :bprev
أصبحت متكررة للغاية، والملف البديل لا يقطعها تمامًا، وما إلى ذلك.vim-plug
في هذا المثال) Plug ' nvim-lua/plenary.nvim ' " don't forget to add this one if you don't have it yet!
Plug ' ThePrimeagen/harpoon '
سنشرح هنا كيفية استخدام قوة الحربة:
يمكنك وضع علامة على الملفات التي تريد العودة إليها لاحقًا
: lua require ( " harpoon.mark " ). add_file ()
عرض كافة علامات المشروع مع:
: lua require ( " harpoon.ui " ). toggle_quick_menu ()
يمكنك الانتقال إلى أعلى وأسفل القائمة أو الدخول أو الحذف أو إعادة الترتيب. q
و <ESC>
يخرجان ويحفظان القائمة
يمكنك أيضًا التبديل إلى أي علامة دون إظهار القائمة، استخدم ما يلي مع فهرس العلامات المطلوب
: lua require ( " harpoon.ui " ). nav_file ( 3 ) -- navigates to file 3
يمكنك أيضًا تدوير القائمة في كلا الاتجاهين
: lua require ( " harpoon.ui " ). nav_next () -- navigates to next mark
: lua require ( " harpoon.ui " ). nav_prev () -- navigates to previous mark
من القائمة السريعة، افتح ملفًا في: تقسيم عمودي باستخدام control+v، تقسيم أفقي باستخدام control+x، علامة تبويب جديدة باستخدام control+t
يعمل هذا مثل التنقل بين الملفات باستثناء أنه في حالة عدم وجود محطة طرفية في الفهرس المحدد، يتم إنشاء محطة طرفية جديدة.
lua require ( " harpoon.term " ). gotoTerminal ( 1 ) -- navigates to term 1
يمكن إرسال الأوامر إلى أي محطة
lua require ( " harpoon.term " ). sendCommand ( 1 , " ls -La " ) -- sends ls -La to tmux window 1
يمكن تخزين المزيد من الأوامر لوقت لاحق بسرعة
lua require ( ' harpoon.cmd-ui ' ). toggle_quick_menu () -- shows the commands menu
lua require ( " harpoon.term " ). sendCommand ( 1 , 1 ) -- sends command 1 to term 1
يتم دعم tmux خارج الصندوق ويمكن استخدامه كبديل مباشر للأجهزة الطرفية العادية بمجرد تبديل 'term' with 'tmux'
مثل ذلك
lua require ( " harpoon.tmux " ). gotoTerminal ( 1 ) -- goes to the first tmux window
lua require ( " harpoon.tmux " ). sendCommand ( 1 , " ls -La " ) -- sends ls -La to tmux window 1
lua require ( " harpoon.tmux " ). sendCommand ( 1 , 1 ) -- sends command 1 to tmux window 1
يقبل sendCommand
و goToTerminal
أيضًا أي معرف جزء tmux صالح.
lua require ( " harpoon.tmux " ). gotoTerminal ( " {down-of} " ) -- focus the pane directly below
lua require ( " harpoon.tmux " ). sendCommand ( " %3 " , " ls " ) -- send a command to the pane with id '%3'
بمجرد التبديل إلى نافذة tmux، يمكنك دائمًا التبديل مرة أخرى إلى neovim، وهو برنامج نصي bash صغير سيتحول إلى النافذة التي تقوم بتشغيل neovim.
في tmux.conf
(أو في أي مكان لديك روابط مفاتيح)، قم بإضافة هذا
bind-key -r G run-shell " path-to-harpoon/harpoon/scripts/tmux/switch-back-to-nvim "
قم أولاً بتسجيل الحربة كامتداد للتلسكوب
require ( " telescope " ). load_extension ( ' harpoon ' )
حاليًا يتم دعم العلامات فقط في التلسكوب
:Telescope harpoon marks
إذا كان تكوين الحربة أمرًا مرغوبًا فيه، فيجب أن يتم ذلك من خلال وظيفة إعداد الحربة
require ( " harpoon " ). setup ({ ... })
إليك جميع الإعدادات العامة المتاحة مع قيمها الافتراضية
global_settings = {
-- sets the marks upon calling `toggle` on the ui, instead of require `:w`.
save_on_toggle = false ,
-- saves the harpoon file upon every change. disabling is unrecommended.
save_on_change = true ,
-- sets harpoon to run the command immediately as it's passed to the terminal when calling `sendCommand`.
enter_on_sendcmd = false ,
-- closes any tmux windows harpoon that harpoon creates when you close Neovim.
tmux_autoclose_windows = false ,
-- filetypes that you want to prevent from adding to the harpoon list menu.
excluded_filetypes = { " harpoon " },
-- set marks specific to each git branch inside git repository
mark_branch = false ,
-- enable tabline with harpoon marks
tabline = false ,
tabline_prefix = " " ,
tabline_suffix = " " ,
}
لتكوين الأوامر الطرفية مسبقًا لاستخدامها لاحقًا
projects = {
-- Yes $HOME works
[ " $HOME/personal/vim-with-me/server " ] = {
term = {
cmds = {
" ./env && npx ts-node src/index.ts "
}
}
}
}
harpoon.log
داخل مسار ذاكرة التخزين المؤقت nvim ( :echo stdpath("cache")
)trace
أو debug
أو info
أو warn
أو error
أو fatal
. warn
هو الافتراضيvim.g.harpoon_log_level
(يجب أن يكون قبل setup()
)HARPOON_LOG=debug nvim
له الأسبقية على vim.g.harpoon_log_level
.warn
. إنها تخدم غرضًا مشابهًا، إلا أن علامات الحربة تختلف بعدة طرق رئيسية:
في بعض الأحيان، لا يكون العرض الافتراضي البالغ 60
عريضًا بدرجة كافية. يوضح المثال التالي كيفية تكوين عرض مخصص عن طريق تعيين عرض القائمة بالنسبة لعرض النافذة الحالية.
require ( " harpoon " ). setup ({
menu = {
width = vim . api . nvim_win_get_width ( 0 ) - 4 ,
}
})
افتراضيًا، سيستخدم سطر الجدول السمة الافتراضية لموضوعك. يمكنك التخصيص عن طريق تحرير النقاط البارزة التالية:
مثال لجعله أكثر نظافة:
vim . cmd ( ' highlight! HarpoonInactive guibg=NONE guifg=#63698c ' )
vim . cmd ( ' highlight! HarpoonActive guibg=NONE guifg=white ' )
vim . cmd ( ' highlight! HarpoonNumberActive guibg=NONE guifg=#7aa2f7 ' )
vim . cmd ( ' highlight! HarpoonNumberInactive guibg=NONE guifg=#7aa2f7 ' )
vim . cmd ( ' highlight! TabLineFill guibg=NONE guifg=white ' )
نتيجة:
للأسئلة حول Harpoon، هناك قناة #harpoon على خادم Primeagen's Discord.