V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
CodeDrift
V2EX  ›  Vim

寻一个 vim 自动居中当前行的插件

  •  
  •   CodeDrift · Jul 19, 2017 · 3828 views
    This topic created in 3206 days ago, the information mentioned may be changed or developed.

    自己设置总是有不全的地方,导致一直跳来跳去的。搜了半天没找到,只好发帖啦。 现在 vim 的配置,已经注释掉了。求一个比较完美的插件

    17 replies    2024-08-27 19:13:11 +08:00
    hvsy
        1
    hvsy  
       Jul 19, 2017
    试一下这两个设置你就知道了
    set so=15
    set siso=10
    cxbig
        2
    cxbig  
       Jul 19, 2017
    还是喜欢手动 zz
    CodeDrift
        3
    CodeDrift  
    OP
       Jul 19, 2017
    @hvsy 我设置 15 和 10 不行。设置了 999 在编辑的时候确实是居中了,可是在一些情况还是不居中
    例如 我打开了 vim 记录了上次打开的位置。 再次打开的时候不是居中的
    CodeDrift
        4
    CodeDrift  
    OP
       Jul 19, 2017
    xiaohanqing
        5
    xiaohanqing  
       Jul 20, 2017 via Android
    :center
    xiaohanqing
        6
    xiaohanqing  
       Jul 20, 2017 via Android
    :set so=999
    你这应该描述为“使光标所在行在窗口垂直居中”,用过 excel 的人看到你这描述都会理解为“使当前行内容左右居中”这个就对应 center 命令
    xiaohanqing
        7
    xiaohanqing  
       Jul 20, 2017 via Android
    要想记住上次位置又想再次打开,可配合 autocmd 打开文件的时候自动 zz,或者使用 saveview 思路,保存视图并恢复视图
    yingluck
        8
    yingluck  
       Jul 20, 2017
    z dot
    这个命令可以手动居中当前行
    如果找不到好的自动居中替代品可以用这个
    CodeDrift
        9
    CodeDrift  
    OP
       Jul 20, 2017
    @xiaohanqing
    au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe "norm '\"zz"|else|exe "norm $zz"|endif|endif


    记住上次位置又想再次打开 这个命令。感觉也不是太好用。。
    CodeDrift
        10
    CodeDrift  
    OP
       Jul 20, 2017
    @xiaohanqing 是为了让光标居中,不是让内容居中
    xiaohanqing
        11
    xiaohanqing  
       Jul 20, 2017
    @Anybfans
    试一下这样
    autocmd! BufReadPost *
    \ if line("'\"")>1 && line("'\"")<=line("$")|
    \ execute 'normal! g`"zz'|
    \ endif
    CodeDrift
        12
    CodeDrift  
    OP
       Jul 21, 2017
    @xiaohanqing 好像不行。。
    xiaohanqing
        13
    xiaohanqing  
       Jul 22, 2017
    @Anybfans 具体是什么不行
    ashfinal
        14
    ashfinal  
       Aug 10, 2017   ❤️ 1
    曾经研究过这个问题。自己拷贝下这段:
    https://github.com/ashfinal/vimrc-config/blob/74813ec2d7eb5eb6cd67d051845416bcb0e9ea04/.vimrc#L187

    Normal、Visual、Insert 模式下都自动居中。很完美。
    CodeDrift
        15
    CodeDrift  
    OP
       Aug 10, 2017
    @ashfinal #14 哇。这个感觉很不错,先试用几天,谢谢啦
    KentY
        16
    KentY  
       Aug 29, 2017
    自动居中... 我个人觉得最佳的位置不是中间, 而是顶端往下几行(比如 5)的位置. 所以我弄了这个 map:

    https://github.com/sk1418/myConf/blob/master/common/.vimrc#L195


    "move current line to top+5 line (zt +5) zl -> zt lower
    nnoremap zl zt4<c-y>
    Epictus
        17
    Epictus  
       Aug 27, 2024   ❤️ 1
    @ashfinal #14 讓我不用查閲 nvim 文檔確定 api ,我重新寫了使用 lua 的配置文檔以供使用 lazyvim 等用戶使用
    https://github.com/Zeuyel/nvim/blob/master/lua/config/autocmds.lua
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1007 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 18:59 · PVG 02:59 · LAX 11:59 · JFK 14:59
    ♥ Do have faith in what you're doing.