【问题标题】:Vi/Vim Dictionary Get Whole LineVi/Vim 字典获取整行
【发布时间】:2017-02-01 23:44:24
【问题描述】:

我有一个用于在 VI 中自动完成的字典文件。我知道我需要使用“CTRL+ X, CTRL+K”来搜索和自动完成单词或行。 示例文件 dic.:

xi_x1_a1

xi_x1_a2

xi_x1_a3

xi_x1_a4

xi_x2_a4

xi_x1_a6

xi_x1_b

...

在 Vi/Vim 中,如果我输入:xi "CTRL+X, CTRL+k",那么我将在光标处接收字典中的所有行。它没有用,因为我的字典文件有很多行。

如何只输入“a4, CTRL+x, CTRL+k”?然后我在光标中只得到两条匹配线用于自动完成线。

xi_x1_a4

xi_x2_a4

感谢您的帮助。

【问题讨论】:

    标签: dictionary autocomplete vi


    【解决方案1】:

    您需要使用completefunc。这使您可以指定要完成的方式。

    如果您编辑 ~/.vimrc 并输入以下内容:

    function! MyCompleteFunc(findstart, base)
      if (a:findstart == 1)
        normal b
        return col(".") - 1
      else
        " Hardcoded path to dictionary. You could tweak this to use
        " whatever dictionary you have set with `set dictionary=`
        let l:data = readfile("/home/david/mydic.txt")
        return filter(l:data, 'v:val =~ ".*' . a:base . '.*"')
      endif
    endfunction
    
    set completefunc=MyCompleteFunc
    

    它应该成功了。

    然后你就可以使用 CTRL+xCTRL+u

    请参阅:help i_^x:help 'completefunc':help complete-function 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 2012-02-20
      • 2016-09-11
      • 2010-09-09
      • 2019-05-23
      • 2012-07-16
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多