Я хочу, чтобы плагин vim YouCompleteMe завершал скобки

#vim

#vim

Вопрос:

Я установил плагин YCM. И я хочу, чтобы YCM завершал левую, правую скобки.

Я создал простой исходный файл cpp. В основной функции я объявил

 vector<int> v(10, 0);
  

когда я нажал точку (.), были показаны векторные функции-члены.

были показаны функции-члены

Затем я нажал клавишу со стрелкой вниз и достиг empty() функции.

Каждый раз, когда я нажимаю клавишу со стрелкой, YCM автоматически завершает название функции. Когда я перемещаю меню рекомендаций, YCM заполняет ТОЛЬКО название функции. не завершает скобки. Это разумно.

Полное имя функции YCM

Наконец, я нажал клавишу ввода (я выбрал empty() функцию). Однако YCM не завершил скобки.

v.пустой

Итак, мне нужно вручную ввести левую и правую скобки.

Я ожидал, что когда я нажму enter, YCM также завершит скобки.

Возможно ли сделать YCM полной скобкой?

ниже приведена моя ~/.vimrc конфигурация.

 let g:neocomplcache_enable_at_startup = 1
set completeopt-=preview
let g:ycm_add_preview_to_completeopt = 0
set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp =~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

Plugin 'delimitMate.vim'
Plugin 'VundleVim/Vundle.vim'
Plugin 'AutoComplPop'
Plugin 'Valloric/YouCompleteMe'
Plugin 'tpope/vim-fugitive'
Plugin 'L9'
Plugin 'git://git.wincent.com/command-t.git'


call vundle#end()            " required
filetype plugin indent on    " required

let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py'
let g:ycm_confirm_extra_conf = 0
"To avoid conflict snippets
let g:ycm_key_list_select_completion = ['<C-j>', '<Down>']
let g:ycm_key_list_previous_completion = ['<C-k>', '<Up>']
let g:ycm_autoclose_preview_window_after_completion = 1
let g:ycm_autoclose_preview_window_after_insertion = 1
let g:ycm_show_diagnostics_ui = 0
let g:ycm_enable_diagnostic_signs = 0
let g:ycm_echo_current_diagnostic = 0
let g:ycm_collect_identifiers_from_tags_files = 1

set backspace=2
if has("syntax")
    syntax on
endif
set nu
set nuw=9
set magic
set ls=2
set sc
set cursorline
"set autoindent
set ts=4
set shiftwidth=4
set laststatus=2
set statusline= %<%l:%v [%P]%=%a %h%m%r %F
set hlsearch
set scrolloff=2
set showmatch
set showmode
set smarttab
set smartindent
set softtabstop=4
set tabstop=4
set ruler
set incsearch
set title
set wrap
set scrollbind
set background=dark

hi Comment term=bold cterm=bold ctermfg=green
syntax enable

" AutoComplPop customizing
function! InsertTabWrapper()
    let col = col('.')-1
    if !col||getline('.')[col-1]!~'k'
        return "<TAB>"
    else
        if pumvisible()
            return "<C-N>"
        else
            return "<C-N><C-P>"
        end
    endif
endfunction
" AutoComplPop end


inoremap <TAB> <c-r>=InsertTabWrapper()<cr>
hi Pmenu ctermbg=blue
hi PmenuSel ctermfg=yellow ctermbg=black
hi PmenuSbar ctermbg=red


"DelimitMate customizing
"BreakLine: Return TRUE if in the middle of {} or () in INSERT mode
fun BreakLine()
  if (mode() == 'i')
    return ((getline(".")[col(".")-2] == '{' amp;amp; getline(".")[col(".")-1] == '}') ||
          (getline(".")[col(".")-2] == '(' amp;amp; getline(".")[col(".")-1] == ')'))
  else
    return 0
  endif
endfun

" Remap <Enter> to split the line and insert a new line in between if
" BreakLine return True
inoremap <expr> <CR> BreakLine() ? "<CR><ESC>O" : "<CR>"
"DelimitMate end
  

Комментарии:

1. Возможно, вам больше повезет в vi.stackexchange.com

2. 1) C — это не C — это не C! 2) Это не связано с языком C. 3) Это также не связано с Linux. 4) Не спамите тегами.

3. Прошу прощения. Я буду более осторожен.