V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Anybfans
V2EX  ›  Vim

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

  •  
  •   Anybfans · 2017-07-19 15:30:51 +08:00 · 3038 次点击
    这是一个创建于 2682 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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


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

    Normal、Visual、Insert 模式下都自动居中。很完美。
    Anybfans
        15
    Anybfans  
    OP
       2017-08-10 17:02:39 +08:00
    @ashfinal #14 哇。这个感觉很不错,先试用几天,谢谢啦
    KentY
        16
    KentY  
       2017-08-29 17:03:58 +08:00
    自动居中... 我个人觉得最佳的位置不是中间, 而是顶端往下几行(比如 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  
       86 天前   ❤️ 1
    @ashfinal #14 讓我不用查閲 nvim 文檔確定 api ,我重新寫了使用 lua 的配置文檔以供使用 lazyvim 等用戶使用
    https://github.com/Zeuyel/nvim/blob/master/lua/config/autocmds.lua
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5331 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 06:59 · PVG 14:59 · LAX 22:59 · JFK 01:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.