My code works, I don’t know why.

國王的耳朵是驢耳朵

Bash下自動完成gvim –remote-tab

| Comments

在gvim需要開tab要打--remote-tab,打久就開始厭煩想偷懶。後來整理網路上的bash_completion相關資料拼湊一個堪用的版本分享一下。因為我只是想偷懶,所以完全沒有去了解bash_completion的細節。嘛,反正可以組裝需要的功能就好。

目錄

測試環境

1
2
3
4
5
6
$ lsb_release  -a
No LSB modules are available.
Distributor ID:   Ubuntu
Description:  Ubuntu 16.04.2 LTS
Release:  16.04
Codename: xenial

安裝方式

  1. 下面文字貼到編輯器,存成/etc/bash_completion.d/gvim
  2. 使用下面指令新增gvim completion
新增gvim completion指令
1
$ . /etc/bash_completion.d/gvim

使用方式

  • 一般使用,直接gvim tab 顯示檔案或目錄
新增gvim completion指令
1
2
3
4
$ gvim `tab`
changelog.Debian.gz  copyright            README.emacs         RelNotes/
changelog.gz         NEWS.Debian.gz       README.md
contrib/             README.Debian        README.source
  • 要使用tab時,下gvim -tab 就會自動填入--remote-tab,接下來再按tab即可選擇檔案或目錄
新增gvim completion指令
1
2
3
4
$ gvim --remote-tab
changelog.Debian.gz  copyright            README.emacs         RelNotes/
changelog.gz         NEWS.Debian.gz       README.md
contrib/             README.Debian        README.source

gvim bash_completion script

gvim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
_gvim()
{
    local cur prev
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="--remote-tab"

    if [[ ${cur} == -* ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi

    compopt -o default; COMPREPLY=()
    return 0
}
complete -F _gvim gvim

參考資料

Comments