VIM怎樣讓編輯行自動位於屏幕中間?

寫代碼時,經常寫著寫著就到低端了。

vim怎樣設置,可以在這種情況下,讓游標所在行自動處於屏幕中間呢


一般是按「zz」調的中間。

如果你是希望固定,那麼可以設置scrolloff:

"scrolloff" "so" 數值型 (預設為 0)
全局
{Vi 無此功能}
游標上下兩側最少保留的屏幕行數。這使你工作時總有一些可見的上下文。
如果你設置此選項為很大的值 (比如 999),游標所在的行將總定位在窗口的中
間位置 (除非你非常靠近文件開始或者結束的地方,或者有長行迴繞)。
水平滾動見 "sidescrolloff"。
注意: 如果置位 "compatible",該選項被設為 0。

然後設一下就好了:

下面總有3行

:se so=3

總在中間

:se so=999


nnoremap j jzz
nnoremap k kzz

當然你還可以用第二種方法:

auto insertleave,cursormoved * normal! zz

不過,第二種方法雖然看起來更簡單,但會影響滑鼠選中操作。

第三種方法是,設置scrolloff(上下滾動保留的行數)為一個很大的值:

set scrolloff=999

雖然第三種方法看起來更像是標準方法,但沒有被我使用,因為移動到文件末尾的時候並不能居中(可能Vim是考慮到應該總是顯示盡量多的內容才這樣設計吧),而寫代碼的時候大多數時間都停留在文件末尾,我們總不能一直盯著屏幕的底邊碼代碼吧。。。

綜上,還是第一種方法的效果比較理想,不過映射j和k鍵僅僅是作為一個演示,實際使用的話,我還會映射更多的鍵:

nnoremap & :noh&zz
noremap j gjzz
noremap k gkzz
noremap n nzz
noremap & &zz
noremap * *zz
noremap # #zz
noremap & &zz
noremap & &zz

更多技巧參見我的另外一個回答

Vim 有什麼奇技淫巧? - 知乎用戶的回答


無論普通模式還是編輯模式,視線始終保持在屏幕中央。(??????) ?

不用謝,叫我雷鋒。GitHub - ashfinal/vimrc-config: re-vim config


普通模式下,按zz即可,另外zt和zb分別定位到屏幕頂部和底部。


如果是在編輯模式下的,可以先按ctrl+o,再按zz,可以定位之後立即回到編輯模式繼續編寫。


fun! CTRL_L()
let l = line(".")
let wl = winline()
let wh = winheight(0)
let b = wh - so
let t = so + 1
" l in [TOP, MIDDLE]
return wl * 2 &<= wh + 1 ? wl &<= t ? "zb" : "zt" : "zz" " l in (MIDDLE, BOTTOM) endf nnoremap && CTRL_L()
imap & &&


推薦閱讀:

如何評價 vim 8.0?
為什麼markdown不支持字型大小和字體顏色?
怎麼在自己的網頁上使用MarkDown編輯器呢?
Sublime Text 2 與 TextMate 2 相比有哪些優缺點?
notepad++里的++用英文怎麼發音?

TAG:文本編輯器 | Vim | vimrc | Vim插件 |