นี่เป็นสิ่งที่เลิกใช้แล้วและการเปลี่ยนแปลงในอนาคตทั้งหมดจะเกิดขึ้นกับสาขา harpoon2
ฉมวก 2
สถานะ : ผสานเข้ากับสายหลักในวันที่ 20 เมษายนหรือ 9 มิถุนายน (ดี)
-- ภาพที่จัดทำโดย Bob Rust
นี่ยังอบไม่ทั่วถึงแม้จะใช้กันหลายคนก็ตาม หากคุณประสบปัญหาใดๆ ดูการปรับปรุงที่คุณคิดว่าน่าทึ่ง หรือเพียงแค่ได้รับข้อเสนอแนะเกี่ยวกับฉมวก (หรือฉัน) สร้างปัญหาขึ้นมา!
: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 ได้ตลอดเวลา นี่เป็นสคริปต์ทุบตีเล็กน้อยที่จะสลับไปที่หน้าต่างที่รัน 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 ,
}
})
ตามค่าเริ่มต้น tabline จะใช้ธีมเริ่มต้นของธีมของคุณ คุณสามารถปรับแต่งได้โดยแก้ไขไฮไลท์ต่อไปนี้:
ตัวอย่างเพื่อทำให้สะอาดขึ้น:
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 บนเซิร์ฟเวอร์ Discord ของ Primeagen