ฉันจะเปลี่ยนเส้นไฮไลต์ Vim ไม่ให้เป็นขีดเส้นใต้ได้อย่างไร


91

ในบางสีธีมบรรทัดปัจจุบันที่เน้นการเปลี่ยนแปลงพื้นหลังในส่วนอื่น ๆ เช่น Desert บรรทัดปัจจุบันจะขีดเส้นใต้

ฉันต้องการเปลี่ยนการไฮไลต์บรรทัดปัจจุบันใน Desert เพื่อใช้สีพื้นหลังอื่นแทนการขีดเส้นใต้ ฉันจะทำเช่นนั้นได้อย่างไร?

ของฉัน.vimrc:

set cursorline
highlight Cursorline cterm=bold

อัปเดต: .vimrcช่วยแก้ปัญหาได้

colorscheme desert
set cursorline
hi CursorLine term=bold cterm=bold guibg=Grey40

7
อาจเป็นเพราะข้อความที่ไม่เหมาะสมของคำถาม ฉันใช้เสรีภาพในการเขียนใหม่เพื่อชี้แจงคำแถลงและยังทำให้การลงคะแนนเชิงลบเป็นกลาง
ib.

คำตอบ:


92
color desert
set cursorline
hi CursorLine term=bold cterm=bold guibg=Grey40

desertคือชุดสีของคุณ (ควรมาก่อน)
ใส่ไว้ในไฟล์~/.vimrc


4
หากคุณกำลังโหลด colorcheme หลังจากบรรทัดเหล่านั้นใน vimrc แล้วชุดสีใหม่อาจกำลังล้างสิ่งต่างๆออก ทดสอบในบรรทัดคำสั่ง Vim ก่อนที่จะลองใส่ vimrc
Herbert Sitz

ฉันรู้วิธีแก้ไขแล้ว ในโค้ดของคุณเราควรเปลี่ยนขีดเส้นใต้เป็นตัวหนา!
ashim

3
@Idigas colorเป็นคำย่อของcolorscheme
kev

1
ใช้งานได้ดีใน gvim หรือ vim-gtk แต่ในกลุ่มเทอร์มินัลจะลบขีดเส้นใต้ออกจากบรรทัดปัจจุบันเท่านั้น ไม่เน้นบรรทัดปัจจุบัน (อย่างน้อยก็ไม่ใช่สำหรับฉัน!)
Omid Kamangar

66

สิ่งนี้ใช้ได้ดีกว่า (ในทุกเทอร์มินัล) สำหรับฉัน

:hi CursorLine   cterm=NONE ctermbg=darkred ctermfg=white

มันคือการตั้งค่าสีสำหรับขั้ว: สีพื้นหลัง - ctermbgและสีของตัวอักษร - ctermfg สำหรับใช้ในหน้าต่างกราฟิกให้เพิ่มพารามิเตอร์guibg=darkred guifg=white

คุณสามารถเน้นคอลัมน์ที่เกี่ยวข้องได้เช่นกันโดยใช้คำสั่ง:

:set cursorcolumn

มีประโยชน์ในการสลับเปิดและปิดการไฮไลต์โดยกดปุ่มเดียวในตัวแก้ไข เพิ่มบรรทัดเหล่านี้ในvimrcของคุณ:

:nnoremap H :set cursorline! cursorcolumn!<CR>

การพิมพ์'H'จะสลับการไฮไลต์เปิดและปิด (แมปกับคีย์อื่นหากคุณต้องการ)

คุณสามารถค้นหาข้อมูลเพิ่มเติมในบทความ: http://vim.wikia.com/wiki/Highlight_current_line


9
และcterm=NONEเป็นการตั้งค่าที่จะลบขีดเส้นใต้ของเส้นเคอร์เซอร์ (ในกรณีของฉัน) ในที่สุด
tbloncar

1
Hโดยค่าเริ่มต้นจะใช้เพื่อย้ายไปที่ด้านบนของบัฟเฟอร์
quapka

20

สำหรับสไตล์ที่คล้ายกับที่คุณได้รับใน gvim ในเทอร์มินัลโดยคงไว้ซึ่งการเน้นไวยากรณ์:

" first thing is entering vim mode, not plain vi
set nocompatible
" force 256 colors on the terminal
set t_Co=256
" load the color scheme before anything
colorscheme darkblue " or desert... or anything
" the syntax cmd is when the colorscheme gets parsed, i think..
syntax on
" might not be on by default, this enable the cursor line feature
set cursorline

" set the prefered colours, pick one line here only.
" dark grey, better you can get if you don't support 256 colours
hi CursorLine   cterm=NONE ctermbg=8 ctermfg=NONE
" light grey, no 256 colors
hi CursorLine   cterm=NONE ctermbg=7 ctermfg=NONE
" dark redish
hi CursorLine   cterm=NONE ctermbg=52 ctermfg=NONE
" dark bluish
hi CursorLine   cterm=NONE ctermbg=17 ctermfg=NONE
" very light grey
hi CursorLine   cterm=NONE ctermbg=254 ctermfg=NONE
" yelowish
hi CursorLine   cterm=NONE ctermbg=229 ctermfg=NONE
" almost black
hi CursorLine   cterm=NONE ctermbg=234 ctermfg=NONE

คุณยังสามารถตั้งค่าตัวแปรสภาพแวดล้อมexport TERM=xterm-256colorเพื่อให้ 256 สีทำงานได้ แผนภูมิสีที่สมบูรณ์อยู่ที่นี่: upload.wikimedia.org/wikipedia/th/1/15/Xterm_256color_chart.svg
apurkrt

1
โดยวิธีการที่set cursorlineจะหายไปจากข้อความที่ตัดตอนมา .vimrc ของคุณ ใช้เวลา 10 นาทีในการคิดออก :)
apurkrt

14

หากคุณต้องการเปิดขีดเส้นใต้ให้ใช้อย่างใดอย่างหนึ่ง:

:hi CursorLine cterm=underline
:hi CursorLine gui=underline

มิฉะนั้นให้ใช้อย่างใดอย่างหนึ่ง:

:hi CursorLine cterm=none
:hi CursorLine gui=none

8

ฉันมีปัญหาที่คล้ายกันในการตั้งค่าไฮไลต์เคอร์เซอร์ไลน์ แต่ของฉันเกิดจากคำสั่ง mksession ที่ฉันใช้เพื่อบันทึกข้อมูลเซสชันระหว่างการออกเป็นกลุ่ม จากนั้นเซสชันนี้จะถูกเรียกคืนโดยอัตโนมัติในระหว่างการเริ่มต้นโปรแกรมหากรันโดยไม่มีข้อโต้แย้งของไฟล์ใด ๆ

หากใครมีการตั้งค่า. vimrc เช่นนี้คุณสามารถเพิ่มสิ่งต่อไปนี้ใน. vimrc เพื่อตั้งค่าไฮไลต์เคอร์เซอร์ได้อย่างถูกต้อง: -

function s:SetCursorLine()
    set cursorline
    hi cursorline cterm=none ctermbg=darkblue ctermfg=white
endfunction
autocmd VimEnter * call s:SetCursorLine()

คำอธิบายเล็กน้อยว่าเหตุใดจึงได้ผล นอกเหนือจากข้อมูลบัฟเฟอร์และหน้าต่างต่างๆแล้ว mksession จะบันทึกชื่อ colorscheme ปัจจุบัน สิ่งนี้ถูกกู้คืนระหว่างการเริ่มต้นโปรแกรมผ่านการคืนค่าเซสชัน อย่างไรก็ตามเนื่องจากโดยทั่วไปแล้วการคืนค่าเซสชันจะเสร็จสิ้นหลังจากเรียกใช้. vimrc แล้ว (โดยทั่วไปจะใช้ฟังก์ชันที่เรียกผ่าน 'autocmd VimEnter *') การตั้งค่าไฮไลต์เคอร์เซอร์ใน. vimrc จะถูกรีเซ็ตโดยค่าเริ่มต้นสำหรับ colorcheme ที่เรียกคืน

ฟังก์ชันข้างต้นซึ่งเรียกใช้ผ่าน autocmd จะถูกเรียกใช้หลังจากการเริ่มต้นทั้งหมดเสร็จสมบูรณ์ดังนั้นจึงตั้งค่าไฮไลต์เคอร์เซอร์ได้สำเร็จ

HTH.


0

คุณต้องเพิ่ม.vimrcend line:

highlight lineNr term=bold cterm=NONE ctermbg=none  ctermfg=none gui=bold

set cursorline

highlight CursorLine term=bold cterm=NONE ctermbg=none  ctermfg=none gui=bold

highlight CursorLineNr term=bold cterm=none ctermbg=none ctermfg=yellow gui=bold
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.