V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wklken
V2EX  ›  Linux

大半夜的发下 vim 配置更新[k-vim], 有兴趣的 vimer 可以看看

  •  6
     
  •   wklken · 2014-10-03 01:44:26 +08:00 · 12618 次点击
    这是一个创建于 3736 天前的主题,其中的信息可能已经有所发展或是发生改变。
    vim入坑三年了, 每隔个半年就来磨下刀, 还搞到半夜(我是有多无聊-_-#)

    链接 https://github.com/wklken/k-vim

    这次更新完成了很多细节/问题, 包括ycm/ultisnips等, 主要是半年多使用不爽的地方基本都修了一遍.

    最大的变化时砍掉了buffer, 全面tab[话说之前用的是iterm2的tab, 切来切去切晕了]

    有兴趣可以看看哈, 文档细节明天补......
    32 条回复    2015-03-17 20:19:10 +08:00
    pandora1991
        1
    pandora1991  
       2014-10-03 02:20:26 +08:00
    lz 技术栈和我差不多,先 mark 一下。
    maemual
        2
    maemual  
       2014-10-03 08:47:34 +08:00 via Android
    感谢楼主,一直以来使用的都是你的vim配置!!!
    ZMOM1031
        3
    ZMOM1031  
       2014-10-03 08:56:28 +08:00
    楼主辛苦了!
    messense
        4
    messense  
       2014-10-03 09:08:38 +08:00
    这个配置的代码跳转到定义等功能有吗?主要是写 Python,需要能在不同文件之间跳转定义,不同文件之间的跳转在 vsplit 打开(tab 用不习惯,外接显示器的时候还是 sp/vsp 比较舒服)。
    wklken
        5
    wklken  
    OP
       2014-10-03 10:26:31 +08:00
    @messense
    ,gd可以到定义处, 但是只能在本文件内跳......我也遇到这个问题, 暂时没解决
    我也是用外接屏, sp/vsp每次都手动敲
    现在切tab的原因是, 有整体项目全局的概念, 而不是纯手工sp/vsp
    即使没有使用tab, 目前nerdtree和ctrlspace都支持快速选中后分屏打开(nerdtree: i/s, ctrlspace: v/V/s/S)
    wklken
        6
    wklken  
    OP
       2014-10-03 10:27:06 +08:00   ❤️ 1
    @pandora1991 可以搞下来玩下, 欢迎拍砖
    messense
        7
    messense  
       2014-10-03 10:31:33 +08:00
    @wklken 试过 YCM 之后又换回 jedi-vim 了,jedi-vim 的跳转到定义很好用,可以自定义是用 tab 还是 split.
    wklken
        8
    wklken  
    OP
       2014-10-03 11:32:02 +08:00
    @messense 搞定了, 已经上传.....可以考虑换回YCM了:)


    " 跳转到定义处, 分屏打开
    let g:ycm_goto_buffer_command = 'horizontal-split'
    nnoremap <leader>jd :YcmCompleter GoToDefinition<CR>
    nnoremap <leader>gd :YcmCompleter GoToDeclaration<CR>
    tywtyw2002
        9
    tywtyw2002  
       2014-10-03 12:16:04 +08:00 via iPhone
    感觉目前 unite比较火。
    ctrlspace感觉比较乱。
    wklken
        10
    wklken  
    OP
       2014-10-03 12:21:05 +08:00
    @tywtyw2002 我倒是觉得unite太重了, ctrlspace刚看的时候配置的确够复杂的(文档问题), 但是用了下基本功能还算简单
    codepiano
        11
    codepiano  
       2014-10-03 12:34:39 +08:00   ❤️ 1
    ctrlp已经不再维护了,可以考虑替换为另一个用户维护的版本

    地址: https://github.com/ctrlpvim/ctrlp.vim

    几个用户维护的版本,维护者包括zencoding的作者等几个人,另外我翻译了ctrlp的文档,已被合并进去

    在github上提了issue
    Pixeller
        12
    Pixeller  
       2014-10-04 13:06:28 +08:00
    忍不住点赞.
    pandora1991
        13
    pandora1991  
       2014-10-05 00:35:25 +08:00
    @wklken 很早就已经搞下来玩了。很赞,同时可以附带一些无插件 vim 技巧,会更棒。例如列编辑之类的。
    geew
        14
    geew  
       2014-10-05 04:46:35 +08:00
    @wklken 注意, 以下 `,` 代表<leader> 这个啥意思啊 虽然也一直用vim 但没怎么配置过.....
    wklken
        15
    wklken  
    OP
       2014-10-05 10:17:18 +08:00
    @geew <leader>你可以理解为一系列组合快捷键的第一个键位, 默认是"\", 配置中改键位为','(能更快地触发)
    geew
        16
    geew  
       2014-10-05 10:38:51 +08:00
    @wklken
    7. tab操作(重点推)
    ctrl+t 新建一个tab

    (hjkl)
    ,th 切第1个tab
    ,tl 切最后一个tab
    ,tj 下一个tab
    ,tk 前一个tab

    我按下了,th没有反应啊
    geew
        17
    geew  
       2014-10-05 11:00:48 +08:00
    @wklken 谢谢 配置不错 插件很赞
    wklken
        18
    wklken  
    OP
       2014-10-05 11:17:44 +08:00   ❤️ 1
    @geew ,th 有反应的前提: 已经新建了多个tab(这个是tab操作)
    ShiehShieh
        19
    ShiehShieh  
       2014-10-05 12:00:33 +08:00
    简直。。。。。。That's what I want. 0.0
    tywtyw2002
        20
    tywtyw2002  
       2014-10-05 14:30:20 +08:00
    @wklken 有一点请教ctrlp自带一个'tag', 'buffertag'是用来找函数的, 那么自带的跟ctrlp-funky有啥区别呢?

    还有一个问题,你是怎么强制使用tab的呢?一般插件比如ack.vim, nerdtree都是新建一个buffer,怎么让他新建tab呢。
    wklken
        21
    wklken  
    OP
       2014-10-05 16:04:03 +08:00
    @tywtyw2002
    ctrlp-funky扩展和'buffertag'其实没啥区别, 只是使用上会更友好(个人感觉)

    没有强制tab, nerdtree, 使用 jistr/vim-nerdtree-tabs 扩展使得所有tab的nerdtree窗口一致, 打开还是使用buffer, 只是推荐使用s/v进行分屏打开(原来是i/s, 改键). ctrlp也是ctrl+x/v进行分屏buffer.

    (nerdtree/ctrlp我认为是当前workspace的导航作用, 所以目前没有尝试在新tab打开, 可以去看看文档, 可能是支持的)
    geew
        22
    geew  
       2014-10-05 20:59:06 +08:00
    @wklken 嗯 我还得多熟练熟练
    chagel
        23
    chagel  
       2014-10-06 10:50:25 +08:00
    一向认为vimer是不应该钟情netrw或nerdtree的
    如果开始偏爱Tab了,就试试VimR吧~
    wklken
        24
    wklken  
    OP
       2014-10-06 11:33:19 +08:00
    @chagel 新增tab操作/nerdtree只是为了解决一些项目全局上查看/定位/编辑的问题, 非刻意处理(仅解决痛点.....).
    VimR试用过, 个人还是偏好全命令行的方式:) 工作流顺畅些
    royzhanggy
        25
    royzhanggy  
       2014-10-06 17:02:24 +08:00
    提示/usr/share/vim/..../syntax.vim找不到是怎么回事?语法高亮为什么会自动找到这个目录来的,本机上/usr/share/下没有vim这个目录
    wklken
        26
    wklken  
    OP
       2014-10-06 18:32:34 +08:00
    @royzhanggy 貌似是markdown的插件导致的

    bundle/vim-markdown/Makefile:1:VIMDIR=/usr/share/vim
    bundle/vundle/CONTRIBUTING.md:108: fall-back for $VIM: "/usr/share/vim"

    ============
    貌似目的是拷贝插件的文件到/usr/share/vim
    可以先去掉这个插件
    geew
        27
    geew  
       2014-10-08 15:00:21 +08:00
    处理 function UltiSnips#bootstrap#Bootstrap 时发生错误:
    第 28 行:
    E887: Sorry, this command is disabled, the Python's site module could not be loaded.
    第 29 行:
    E887: Sorry, this command is disabled, the Python's site module could not be loaded.
    第 30 行:
    E887: Sorry, this command is disabled, the Python's site module could not be loaded.
    第 32 行:
    E887: Sorry, this command is disabled, the Python's site module could not be loaded.
    第 33 行:
    E887: Sorry, this command is disabled, the Python's site module could not be loaded.
    第 34 行:
    E887: Sorry, this command is disabled, the Python's site module could not be loaded.
    第 35 行:
    E887: Sorry, this command is disabled, the Python's site module could not be loaded.


    打开某个目录下的py文件会发现这个错误, 但是别的地方的py文件又没有报错 什么原因呢
    wklken
        28
    wklken  
    OP
       2014-10-08 22:12:59 +08:00
    @geew
    可能是打开的这个 python 文件名和某个标准库名一致貌似会导致这个问题, 一直没有找到解决方法>_<#
    geew
        29
    geew  
       2014-10-09 09:59:57 +08:00
    @wklken 但是我在上层目录 用 vim dir/xxx.py 打开这个py文件就没问题, 在当前目录打开就有问题。。。。
    wklken
        30
    wklken  
    OP
       2014-10-09 13:01:07 +08:00
    @geew 是这样子的, 暂无解决办法:(
    tywtyw2002
        31
    tywtyw2002  
       2015-02-09 15:40:18 +08:00
    楼主目前有什么插件,可以实现在看代码的时候在preview中显示这个函数的定义呢?

    类似ycm自动补全在补全的时候显示的preview窗口,只不过我不需要自动补全,我需要查看光标所在位置这个函数的信息。
    gkiwi
        32
    gkiwi  
       2015-03-17 20:19:10 +08:00
    @geew 这个就是 @wklken 说的原因;

    比如目录:
    task/
    sysconfig.py

    此时你待在task文件夹下,使用vim打开sysconfig.py就会出现上述的异常.
    因为我们打开vim(常常包含各种插件)会调用一些python写的的插件,而如果这些python写的插件恰好用到了某个库/文件(如例子中的sysconfig),那么根据python的寻库(按照sys.path顺序)方式,显然当前文件夹会被优先拜访,而sysconfig文件就中招了,导致vim插件出现异常,也就会出现上面所说的异常;

    而你在上层目录时候,sys.path中是不会包含dir/* 这级目录的,所以就没问题了.

    出现这个问题,就跑去其他目录,打开ipython,import dir下面的几个文件名,如果出现没报异常的就说明名称被占用了占用了,dir下某个文件名字有问题...其实大多说时候看看就能瞅出来是否命名占用了.


    今天我也遇到这个问题了...说的好绕
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5295 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:16 · PVG 17:16 · LAX 01:16 · JFK 04:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.