ปลั๊กอินโหมด vi(vim) ที่ดีและเป็นมิตรสำหรับ ZSH
ZSH
สำหรับผู้ไม่เชื่อเรื่องพระเจ้า บางทีคุณอาจเคยพบกับโหมด Vi เริ่มต้นใน Zsh หลังจากเปิดโหมด Vi เริ่มต้นแล้ว คุณค่อยๆ พบว่ามีปัญหามากมาย คุณลักษณะบางอย่างไม่สมบูรณ์หรือไม่มีอยู่จริง และพฤติกรรมบางอย่างยังแตกต่างจาก Vi(Vim ดั้งเดิม) ) โหมด.
แม้ว่าโหมด Vi เริ่มต้นจะค่อนข้างน่าอายและไม่เป็นที่พอใจ แต่คุณยังคงใช้มันต่อไปและค่อยๆ หมดความสนใจหลังจากใช้งานไประยะหนึ่ง ในที่สุดคุณก็ยอมแพ้อย่างผิดหวัง
คุณไม่เคยคิดถึงโหมด Vi มาเป็นเวลานาน วันหนึ่งคุณบังเอิญค้นพบปลั๊กอินนี้ คุณอ่านที่นี่และรู้ว่าปลั๊กอินนี้มีไว้เพื่อแก้ไขปัญหาข้างต้น และทำให้คุณหลงรักโหมด Vi อีกครั้ง จู่ๆ รอยยิ้มก็ปรากฏขึ้นบนใบหน้าของคุณราวกับได้ชีวิตที่ดีกลับคืนมา
ถ้าฤดูหนาวมาถึง ฤดูใบไม้ผลิจะตามหลังไปไกลได้ไหม?
10p
และ 4fa
( กำลังดำเนินการ )ZSH: >= 5.1.0
รวม zsh-vi-mode
ใน .zshrc
ของคุณ
antigen bundle jeffreytse/zsh-vi-mode
โหลด zsh-vi-mode
เป็นปลั๊กอินใน .zshrc
ของคุณ
zplug " jeffreytse/zsh-vi-mode "
รวมคำสั่ง load ไว้ใน .zshrc
ของคุณ
zgen load jeffreytse/zsh-vi-mode
รวมคำสั่ง load ไว้ใน .zshrc
ของคุณ
zinit ice depth=1
zinit light jeffreytse/zsh-vi-mode
หมายเหตุ: การใช้ depth=1
น้ำแข็งเป็นทางเลือก ปลั๊กอินนี้ไม่แนะนำหรือสนับสนุนน้ำแข็งประเภทอื่นอย่างเป็นทางการ
โคลน zsh-vi-mode
ลงใน repo ปลั๊กอินที่คุณกำหนดเอง
git clone https://github.com/jeffreytse/zsh-vi-mode
$ZSH_CUSTOM /plugins/zsh-vi-mode
จากนั้นโหลดเป็นปลั๊กอินใน .zshrc
ของคุณ
plugins+=(zsh-vi-mode)
โปรดทราบว่าจำเป็นต้องเพิ่มปลั๊กอินก่อนที่จะมีแหล่งที่มาของ oh-my-zsh.sh
เพิ่ม zsh-vi-mode
ให้กับไฟล์ปลั๊กอินของคุณ (เช่น ~/.zsh_plugins.txt
)
jeffreytse/zsh-vi-mode
โหลด zsh-vi-mode
เป็นปลั๊กอินใน .zshrc
ของคุณ
plug " jeffreytse/zsh-vi-mode "
โหลด zsh-vi-mode
เป็นปลั๊กอินใน .zimrc
ของคุณ
zmodule jeffreytse/zsh-vi-mode
สำหรับผู้ใช้ Homebrew คุณสามารถติดตั้งผ่านคำสั่งต่อไปนี้
brew install zsh-vi-mode
จากนั้นแหล่งที่มาใน .zshrc
ของคุณ (หรือ .bashrc
)
source $( brew --prefix ) /opt/zsh-vi-mode/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh
สำหรับผู้ใช้ Arch Linux คุณสามารถติดตั้งผ่านคำสั่งต่อไปนี้
yay -S zsh-vi-mode
หรืออัพเดทล่าสุด(ไม่เสถียร)
yay -S zsh-vi-mode-git
จากนั้นแหล่งที่มาใน .zshrc
ของคุณ (หรือ .bashrc
)
source /usr/share/zsh/plugins/zsh-vi-mode/zsh-vi-mode.plugin.zsh
สำหรับผู้ใช้ Nix ณ e7e3480530b34a9fe8cb52963ec2cf66e6707e15 คุณสามารถจัดหาปลั๊กอินผ่านการกำหนดค่าต่อไปนี้
programs = {
zsh = {
interactiveShellInit = ''
source ${ pkgs . zsh-vi-mode } /share/zsh-vi-mode/zsh-vi-mode.plugin.zsh
'' ;
} ;
} ;
หรือถ้าคุณชอบ home-manager
:
home-manager . users . [ your username ] = { pkgs , ... } : {
programs = {
zsh = {
initExtra = ''
source ${ pkgs . zsh-vi-mode } /share/zsh-vi-mode/zsh-vi-mode.plugin.zsh
'' ;
} ;
} ;
} ;
คุณยังสามารถใช้ฟีเจอร์ "ปลั๊กอิน" ในตัวของ home-manager
ได้:
home-manager . users . [ your username ] = { pkgs , ... } : {
programs = {
zsh = {
plugins = [
{
name = "vi-mode" ;
src = pkgs . zsh-vi-mode ;
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh" ;
}
] ;
} ;
} ;
} ;
Fig เพิ่มแอพ ทางลัด และการเติมข้อความอัตโนมัติไปยังเทอร์มินัลที่มีอยู่ของคุณ
ติดตั้ง zsh-vi-mode
ได้ในคลิกเดียว
มีอยู่ในโอเวอร์เลย์ dm9pZCAq
eselect repository enable dm9pZCAq
emerge --sync dm9pZCAq
emerge app-shells/zsh-vi-mode
จากนั้นแหล่งที่มาใน .zshrc
ของคุณ (หรือ .bashrc
)
source /usr/share/zsh/site-contrib/zsh-vi-mode/zsh-vi-mode.plugin.zsh
โคลนที่เก็บนี้ที่ไหนสักแห่ง ( $HOME/.zsh-vi-mode
เป็นต้น)
git clone https://github.com/jeffreytse/zsh-vi-mode.git $HOME /.zsh-vi-mode
จากนั้นแหล่งที่มาใน .zshrc
ของคุณ (หรือ .bashrc
)
source $HOME /.zsh-vi-mode/zsh-vi-mode.plugin.zsh
ใช้ ESC
หรือ CTRL-[
เพื่อเข้าสู่ Normal mode
แต่บางคนอาจชอบคีย์ Escape แบบกำหนดเอง เช่น jj
, jk
และอื่นๆ หากคุณต้องการกำหนดคีย์ Escape เอง คุณสามารถเรียนรู้เพิ่มเติมได้จากที่นี่
ctrl-p
: คำสั่งก่อนหน้าในประวัติศาสตร์ctrl-n
: คำสั่งถัดไปในประวัติศาสตร์/
: ค้นหาย้อนหลังในประวัติศาสตร์n
: ทำซ้ำครั้งสุดท้าย /
Normal mode
จะแสดงด้วยเคอร์เซอร์สไตล์บล็อก และ Insert mode
ด้วยเคอร์เซอร์สไตล์ลำแสงตามค่าเริ่มต้น
ใน Normal mode
คุณสามารถใช้ vv
เพื่อแก้ไขบรรทัดคำสั่งปัจจุบันในตัวแก้ไข (เช่น vi
/ vim
/ nvim
... ) เนื่องจากถูกผูกไว้กับ Visual mode
คุณสามารถเปลี่ยนเอดิเตอร์ด้วยตัวเลือก ZVM_VI_EDITOR
โดยดีฟอลต์คือ $EDITOR
$
: ไปที่ท้ายบรรทัด^
: ไปยังอักขระตัวแรกที่ไม่เว้นว่างของบรรทัด0
: ไปที่อักขระตัวแรกของบรรทัดw
: [นับ] คำไปข้างหน้าW
: [นับ] คำไปข้างหน้าe
: ส่งต่อไปยังจุดสิ้นสุดของคำ [นับ] รวมE
: ส่งต่อไปยังจุดสิ้นสุดของ WORD [นับ] รวมb
: [นับ] คำย้อนหลังB
: [นับ] คำย้อนหลังt{char}
: จนถึงก่อน [count]'เกิด {char} ทางด้านขวาT{char}
: จนถึงก่อน [count]'เกิด {char} ทางด้านซ้ายf{char}
: เพื่อ [นับ] การเกิด {char} ทางด้านขวาF{char}
: เพื่อ [นับ] การเกิด {char} ครั้งที่ด้านซ้าย;
: ทำซ้ำ f, t, F หรือ T [นับ] ล่าสุด,
: ทำซ้ำ f, t, F หรือ T ล่าสุดในทิศทางตรงกันข้าม i
: แทรกข้อความหน้าเคอร์เซอร์I
: แทรกข้อความหน้าอักขระตัวแรกในบรรทัดa
: เพิ่มข้อความต่อท้ายเคอร์เซอร์A
: เพิ่มข้อความต่อท้ายบรรทัดo
: แทรกบรรทัดคำสั่งใหม่ด้านล่างบรรทัดปัจจุบันO
: แทรกบรรทัดคำสั่งใหม่เหนือบรรทัดปัจจุบัน โหมดการผูกปุ่มมี 2 ประเภทสำหรับการทำงานแบบเซอร์ราวด์ ค่าเริ่มต้นคือโหมด classic
คุณสามารถเลือกโหมดได้โดยการตั้งค่าตัวเลือก ZVM_VI_SURROUND_BINDKEY
classic
(กริยา->s->เซอร์ราวด์)S"
: เพิ่ม "
สำหรับการเลือกภาพys"
: เพิ่ม "
สำหรับการเลือกภาพcs"'
: เปลี่ยน "
เป็น '
ds"
: ลบ "
s-prefix
(s->กริยา->เซอร์ราวด์)sa"
: เพิ่ม "
สำหรับการเลือกภาพsd"
: ลบ "
sr"'
: เปลี่ยน "
เป็น '
โปรดทราบว่าจะต้องกดลำดับคีย์อย่างต่อเนื่องอย่างรวดเร็วเพื่อหลีกเลี่ยงการหมดเวลา คุณสามารถขยายการหมดเวลานี้ด้วยตัวเลือก ZVM_KEYTIMEOUT
vi"
: เลือกวัตถุข้อความภายในเครื่องหมายคำพูดva(
: เลือกวัตถุข้อความรวมถึงวงเล็บปีกกาจากนั้น คุณสามารถดำเนินการใดๆ สำหรับการเลือกได้:
vi"
-> S[
หรือ sa[
=> "object"
-> "[object]"
va"
-> S[
หรือ sa[
=> "object"
-> ["object"]
di(
หรือ vi(
-> d
ca(
หรือ va(
-> c
yi(
หรือ vi(
-> y
ในโหมดปกติ การพิมพ์ ctrl-a
จะเพิ่มเป็นคีย์เวิร์ดถัดไป และการพิมพ์ ctrl-x
จะลดลงเป็นคีย์เวิร์ดถัดไป คำหลักอาจอยู่ที่เคอร์เซอร์หรือทางด้านขวาของเคอร์เซอร์ (ในบรรทัดเดียวกัน) คำหลักอาจเป็นดังนี้:
ตัวอย่างเช่น:
9
=> 10
aa99bb
=> aa100bb
aa100bc
=> aa101bc
0xDe
=> 0xdf
0Xdf
=> 0Xe0
0b101
=> 0b110
0B11
=> 0B101
true
=> false
yes
=> no
on
=> off
T
=> F
Fri
=> Sat
Oct
=> Nov
Monday
=> Tuesday
January
=> February
+
=> -
++
=> --
==
=> !=
!==
=> ===
&&
=> ||
and
=> or
100
=> 99
aa100bb
=> aa99bb
0
=> -1
0xdE0
=> 0xDDF
0xffFf0
=> 0xfffef
0xfffF0
=> 0xFFFEF
0x0
=> 0xffffffffffffffff
0Xf
=> 0Xe
0b100
=> 0b010
0B100
=> 0B011
True
=> False
On
=> Off
Sun
=> Sat
Jan
=> Dec
Monday
=> Sunday
August
=> July
/
=> *
++
=> --
==
=> !=
!==
=> ===
||
=> &&
or
=> and
คุณสามารถใช้ตัวเลือกด้านล่างเพื่อกำหนดคีย์ Escape เองซึ่งจะตรงกับรสนิยมของคุณมากขึ้น เช่น jj
หรือ jk
และอื่นๆ
ZVM_VI_ESCAPE_BINDKEY
: ปุ่ม vi Escape ในทุกโหมด (ค่าเริ่มต้นคือ ^[
=> ESC
)ZVM_VI_INSERT_ESCAPE_BINDKEY
: ปุ่ม vi Escape ในโหมดแทรก (ค่าเริ่มต้นคือ $ZVM_VI_ESCAPE_BINDKEY
)ZVM_VI_VISUAL_ESCAPE_BINDKEY
: ปุ่ม vi Escape ในโหมดภาพ (ค่าเริ่มต้นคือ $ZVM_VI_ESCAPE_BINDKEY
)ZVM_VI_OPPEND_ESCAPE_BINDKEY
: ปุ่ม vi Escape ในโหมดรอดำเนินการของตัวดำเนินการ (ค่าเริ่มต้นคือ $ZVM_VI_ESCAPE_BINDKEY
)ตัวอย่างเช่น:
# Only changing the escape key to `jk` in insert mode, we still
# keep using the default keybindings `^[` in other modes
ZVM_VI_INSERT_ESCAPE_BINDKEY=jk
ปลั๊กอินนี้รองรับการเลือกกลไก readkey สำหรับการอ่านและประมวลผลเหตุการณ์สำคัญ ทำได้ง่ายดายด้วยตัวเลือก ZVM_READKEY_ENGINE
ปัจจุบันรองรับเอ็นจิ้นด้านล่าง:
ZVM_READKEY_ENGINE_NEX
: มันเป็นเอ็นจิ้น readkey ที่ดีกว่าที่จะแทนที่ ZLE (เบต้า)ZVM_READKEY_ENGINE_ZLE
: เป็นเอ็นจิ้น readkey เริ่มต้นของ Zsh (ZLE)ZVM_READKEY_ENGINE_DEFAULT
: มันเป็นเอ็นจิ้นเริ่มต้นของปลั๊กอินนี้ (ตอนนี้เป็นเอ็นจิ้น NEX)NEX เป็นเอ็นจิ้นที่ดีกว่าสำหรับการอ่านและจัดการเหตุการณ์สำคัญกว่าเอ็นจิ้น ZLE ของ Zsh ซึ่งปัจจุบันเอ็นจิ้น NEX ยังอยู่ในช่วงเบต้า คุณสามารถเปลี่ยนกลับไปเป็นเอ็นจิ้น ZLE ของ Zsh ได้หากต้องการ
ตัวอย่างเช่น:
# Change to Zsh's default readkey engine
ZVM_READKEY_ENGINE= $ZVM_READKEY_ENGINE_ZLE
คุณสามารถใช้ตัวเลือก ZVM_KEYTIMEOUT
เพื่อปรับการหมดเวลาอินพุตคีย์สำหรับการรอคีย์ถัดไป ค่าเริ่มต้นคือ 0.4
วินาที
ปุ่ม Escape เป็นกรณีพิเศษ สามารถใช้แบบสแตนด์อโลนได้ เอ็นจิ้น NEX รอเป็นระยะเวลาหนึ่งหลังจากได้รับอักขระหลีก เพื่อตรวจสอบว่าเป็นแบบสแตนด์อโลนหรือเป็นส่วนหนึ่งของลำดับหลีก ขณะรอ การกดปุ่มเพิ่มเติมจะทำให้ปุ่ม Escape ทำงานเป็นเมตาคีย์ ถ้าไม่มีการกดปุ่มอื่นๆ เข้ามา ระบบจะจัดการเป็นการหลบหนีแบบสแตนด์อโลน
สำหรับเอ็นจิ้น NEX เราสามารถใช้ตัวเลือก ZVM_ESCAPE_KEYTIMEOUT
เพื่อปรับการหมดเวลารอสำหรับคีย์ Escape ค่าเริ่มต้นคือ 0.03
วินาที
เนื่องจากมีตัวเลือกการกำหนดค่าบางตัวที่ต้องอาศัยตัวแปรบางตัวที่กำหนดไว้ในปลั๊กอิน แต่บางตัวก็ใช้ไม่ได้ เราจำเป็นต้องมีฟังก์ชันรายการการกำหนดค่าแบบรวม ชื่อของฟังก์ชันรายการจะถูกเก็บไว้ในตัวเลือกที่เรียกว่า ZVM_CONFIG_FUNC
และค่าเริ่มต้นคือ zvm_config
คุณสามารถเปลี่ยนเป็นตัวเลือกอื่นเพื่อให้เหมาะกับรสชาติของคุณได้
หากมีฟังก์ชันการกำหนดค่านี้อยู่ ระบบจะเรียกฟังก์ชันนี้โดยอัตโนมัติ คุณสามารถกำหนดค่าบางอย่างในส่วนนี้ได้ก่อนที่คุณจะใช้แหล่งที่มาของปลั๊กอินนี้ ตัวอย่างเช่น:
function zvm_config() {
ZVM_LINE_INIT_MODE= $ZVM_MODE_INSERT
ZVM_VI_INSERT_ESCAPE_BINDKEY=jk
}
source ~ /zsh-vi-mode.zsh
ปลั๊กอินนี้ได้จัดเตรียมกลไกในการรันคำสั่งพิเศษ และตอนนี้คุณมีคุณสมบัติด้านล่างสำหรับการดำเนินการบางอย่าง:
zvm_before_init_commands=()
zvm_after_init_commands=()
zvm_before_select_vi_mode_commands=()
zvm_after_select_vi_mode_commands=()
zvm_before_lazy_keybindings_commands=()
zvm_after_lazy_keybindings_commands=()
เนื่องจากโหมดการเริ่มต้นเริ่มต้น ปลั๊กอินนี้จะเขียนทับการเชื่อมโยงคีย์ก่อนหน้านี้ ซึ่งทำให้การเชื่อมโยงคีย์ของปลั๊กอินอื่นๆ (เช่น fzf
, zsh-autocomplete
ฯลฯ) ล้มเหลว
คุณสามารถแก้ไขปัญหาความเข้ากันได้ได้ดังนี้:
# Append a command directly
zvm_after_init_commands+=( ' [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh ' )
หรือ
# Define an init function and append to zvm_after_init_commands
function my_init() {
[ -f ~ /.fzf.zsh ] && source ~ /.fzf.zsh
}
zvm_after_init_commands+=(my_init)
หรือ
# The plugin will auto execute this zvm_after_init function
function zvm_after_init() {
[ -f ~ /.fzf.zsh ] && source ~ /.fzf.zsh
}
หรือถ้าคุณใช้ zinit
:
# For postponing loading `fzf`
zinit ice lucid wait
zinit snippet OMZP::fzf
ตามค่าเริ่มต้น คุณลักษณะการผูกปุ่มแบบขี้เกียจจะถูกเปิดใช้งาน การผูกปุ่มทั้งหมดของโหมด normal
และโหมด visual
ควรดำเนินการโดย zvm_after_lazy_keybindings_commands
ตัวอย่างเช่น:
# The plugin will auto execute this zvm_after_lazy_keybindings function
function zvm_after_lazy_keybindings() {
bindkey -M vicmd ' s ' your_normal_widget
bindkey -M visual ' n ' your_visual_widget
}
ปลั๊กอินนี้มีสองฟังก์ชันให้คุณกำหนดวิดเจ็ตที่กำหนดเองและการเชื่อมโยงคีย์ ในกรณีที่เกิดปัญหาที่ไม่จำเป็น ควรใช้งานโดยเฉพาะอย่างยิ่งเมื่อคุณพบข้อขัดแย้งที่สำคัญ
ในการกำหนดวิดเจ็ตแบบกำหนดเอง คุณควร:
# If [your_custom_widget] were ignored, it will be the same with <your_custom_widget>
zvm_define_widget < your_custom_widget > [your_custom_function]
หากต้องการกำหนดการผูกคีย์ คุณควร:
zvm_bindkey < keymap > < keys > < widget >
ตัวอย่างเช่น:
# Your custom widget
function my_custom_widget() {
echo ' Hello, ZSH! '
}
# The plugin will auto execute this zvm_after_lazy_keybindings function
function zvm_after_lazy_keybindings() {
# Here we define the custom widget
zvm_define_widget my_custom_widget
# In normal mode, press Ctrl-E to invoke this widget
zvm_bindkey vicmd ' ^E ' my_custom_widget
}
ปลั๊กอินนี้ได้จัดเตรียมตัวแปร ZVM_MODE
เพื่อให้คุณดึงข้อมูลโหมด vi ปัจจุบันและแสดงตัวบ่งชี้ได้ดียิ่งขึ้น
และปัจจุบันรองรับโหมดด้านล่าง:
ZVM_MODE_NORMAL
ZVM_MODE_INSERT
ZVM_MODE_VISUAL
ZVM_MODE_VISUAL_LINE
ZVM_MODE_REPLACE
สำหรับการอัพเดตตัวบ่งชี้โหมด vi เราควรเพิ่มคำสั่งของเราไปที่ zvm_after_select_vi_mode_commands
ตัวอย่างเช่น:
# The plugin will auto execute this zvm_after_select_vi_mode function
function zvm_after_select_vi_mode() {
case $ZVM_MODE in
$ZVM_MODE_NORMAL )
# Something you want to do...
;;
$ZVM_MODE_INSERT )
# Something you want to do...
;;
$ZVM_MODE_VISUAL )
# Something you want to do...
;;
$ZVM_MODE_VISUAL_LINE )
# Something you want to do...
;;
$ZVM_MODE_REPLACE )
# Something you want to do...
;;
esac
}
ปลั๊กอินนี้มีตัวเลือกสำหรับผู้ใช้ในการปรับแต่งสไตล์เคอร์เซอร์เพื่อความเข้ากันได้ของเทอร์มินัลที่ดีขึ้น
ZVM_CURSOR_STYLE_ENABLED
(ค่าเริ่มต้นคือ true
) # Disable the cursor style feature
ZVM_CURSOR_STYLE_ENABLED=false
# The prompt cursor in normal mode
ZVM_NORMAL_MODE_CURSOR
# The prompt cursor in insert mode
ZVM_INSERT_MODE_CURSOR
# The prompt cursor in visual mode
ZVM_VISUAL_MODE_CURSOR
# The prompt cursor in visual line mode
ZVM_VISUAL_LINE_MODE_CURSOR
# The prompt cursor in operator pending mode
ZVM_OPPEND_MODE_CURSOR
ZVM_CURSOR_USER_DEFAULT
ZVM_CURSOR_BLOCK
ZVM_CURSOR_UNDERLINE
ZVM_CURSOR_BEAM
ZVM_CURSOR_BLINKING_BLOCK
ZVM_CURSOR_BLINKING_UNDERLINE
ZVM_CURSOR_BLINKING_BEAM
ZVM_INSERT_MODE_CURSOR= $ZVM_CURSOR_BEAM
ZVM_NORMAL_MODE_CURSOR= $ZVM_CURSOR_BLOCK
ZVM_OPPEND_MODE_CURSOR= $ZVM_CURSOR_UNDERLINE
# The plugin will auto execute this zvm_config function
zvm_config () {
# Retrieve default cursor styles
local ncur= $( zvm_cursor_style $ZVM_NORMAL_MODE_CURSOR )
local icur= $( zvm_cursor_style $ZVM_INSERT_MODE_CURSOR )
# Append your custom color for your cursor
ZVM_INSERT_MODE_CURSOR= $icur ' ee]12;reda '
ZVM_NORMAL_MODE_CURSOR= $ncur ' ee]12;#008800a '
}
เราสามารถใช้ตัวเลือก ZVM_TERM
เพื่อตั้งค่าประเภทคำสำหรับปลั๊กอินเพื่อจัดการลำดับการหลีกเลี่ยงเทอร์มินัล โดยค่าเริ่มต้นคือ $TERM
มันอาจจะเป็น xterm-256color
, alacritty-256color
, st-256color
ฯลฯ สิ่งสำคัญคือเทอร์มินัลอีมูเลเตอร์บางตัวจะแสดงเคอร์เซอร์อย่างถูกต้อง
คุณสามารถใช้ ZVM_VI_HIGHLIGHT_BACKGROUND
, ZVM_VI_HIGHLIGHT_FOREGROUND
และ ZVM_VI_HIGHLIGHT_EXTRASTYLE
เพื่อเปลี่ยนลักษณะการทำงานของไฮไลต์ (ล้อมรอบ เส้นภาพ ฯลฯ) ค่าสีอาจเป็น ชื่อสี หรือ ค่าสีฐานสิบหก
ตัวอย่างเช่น:
ZVM_VI_HIGHLIGHT_FOREGROUND=green # Color name
ZVM_VI_HIGHLIGHT_FOREGROUND= # 008800 # Hex value
ZVM_VI_HIGHLIGHT_BACKGROUND=red # Color name
ZVM_VI_HIGHLIGHT_BACKGROUND= # ff0000 # Hex value
ZVM_VI_HIGHLIGHT_EXTRASTYLE=bold,underline # bold and underline
คุณสามารถตั้งค่าโหมดเริ่มต้นของบรรทัดคำสั่งได้โดยใช้ตัวเลือก ZVM_LINE_INIT_MODE
ปัจจุบันรองรับโหมดด้านล่าง:
ZVM_MODE_LAST
: เริ่มต้นด้วยโหมดสุดท้าย (ค่าเริ่มต้น)ZVM_MODE_INSERT
: เริ่มต้นด้วยโหมดแทรกZVM_MODE_NORMAL
: เริ่มต้นด้วยโหมดปกติตัวอย่างเช่น:
# Always starting with insert mode for each command line
ZVM_LINE_INIT_MODE= $ZVM_MODE_INSERT
ปลั๊กอินนี้รองรับคุณสมบัติการผูกปุ่มแบบขี้เกียจ และเปิดใช้งานตามค่าเริ่มต้น หากต้องการปิดใช้งาน คุณสามารถตั้งค่าตัวเลือก ZVM_LAZY_KEYBINDINGS
เป็น false
ก่อนที่จะโหลดปลั๊กอินนี้ คุณสมบัตินี้จะเลื่อนการผูกปุ่มทั้งหมดของโหมด normal
และ visual
ออกไปในครั้งแรกที่คุณเข้าสู่โหมดปกติ
มันสามารถปรับปรุงความเร็วในการเริ่มต้นได้อย่างมาก โดยเฉพาะอย่างยิ่งเมื่อคุณเปิดเทอร์มินัลและเพียงต้องการดำเนินการคำสั่งง่ายๆ
เพื่อป้องกันปัญหาต่างๆ ที่เกี่ยวข้องกับการผูกคีย์ที่เกิดจากลำดับการจัดหาปลั๊กอิน และยังคงฟังก์ชันการทำงานเดิมสำหรับปลั๊กอินนี้ การเริ่มต้นของปลั๊กอินนี้จึงถูกเลื่อนออกไปเป็นบรรทัดคำสั่งแรกที่เริ่มต้น
อย่างไรก็ตาม ปลั๊กอินเกือบทั้งหมดจะเริ่มต้นได้เมื่อมีแหล่งที่มาของสคริปต์ ดังนั้นปลั๊กอินนี้จึงมีตัวเลือก ZVM_INIT_MODE
เพื่อเปลี่ยนโหมดการเริ่มต้น
ตัวอย่างเช่น:
# Do the initialization when the script is sourced (i.e. Initialize instantly)
ZVM_INIT_MODE=sourcing
ปัญหาและคำขอดึงได้รับการชื่นชมอย่างมาก หากคุณไม่เคยมีส่วนร่วมในโครงการโอเพ่นซอร์สมาก่อน ฉันยินดีเป็นอย่างยิ่งที่จะแนะนำวิธีสร้างคำขอดึงข้อมูลให้คุณทราบ
คุณสามารถเริ่มต้นด้วยการเปิดปัญหาที่อธิบายถึงปัญหาที่คุณต้องการแก้ไข แล้วเราจะดำเนินการต่อจากจุดนั้น
ธีมนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT © Jeffrey Tse