61764


C++のソースコードの入力時、vim-lsp、aleでエラー表示を行い、補間にはclangをvim-
lsp経由で使用しています。あまり思い当たる設定変更をした記憶がないのですが、昨日から補間の候補をtabで選択し、C-pやEnterで確定した場合やEscでインサートモードを抜けた際に、補完した文字列の後ろに続く文字が削除されてしまうようになりました。

たとえば、`std::vector<std::vector<std::pair<int,
in>>>`と入力し、nの後ろを補間すると、`>>`が消えて、`std::vector<std::vector<std::pair<int,
int>`になってしまいます。

ターミナルエミュレータにはlilytermを使用していますが、alacrittyでも同様の状態になります。`vim hoge.cpp -u
NONE`で起動すると補間は出来ませんが、問題も再現出来ませんでした。OSはantergosを使用しています。この問題についてどなたかご教授いただけますでしょうか。以下はinit.vimをそのまま貼り付けました。どうぞよろしくお願いいたします。

[code]

    "-------------------------
    " GENERAL SETTINGS
    "-------------------------
    set history=10000
    " disable motion by mouse
    set mouse=
    " set clipboard^=unnamed,unnamedplus
    set noswapfile
    
    
    "-------------------------
    " PLUGINS
    "-------------------------
    " automatic installation of vim-plug itself
    if empty(glob('~/.config/nvim/autoload/plug.vim'))
        silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs
          \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
        autocmd VimEnter * PlugInstall
    endif
    
    call plug#begin('~/.config/nvim/plugged')
        " :PlugInstall -> install plugins
        " :PlugUpdate -> update plugins
        " :PlugUpdate! -> force update plugins
        " :PlugUpgrade -> update vim-plug itself
    
        " appearance
        Plug 'nathanaelkane/vim-indent-guides'
        Plug 'freeo/vim-kalisi'
        Plug 'cocopon/lightline-hybrid.vim'
        Plug 'itchyny/lightline.vim'
        " Plug 'w0ng/vim-hybrid'
        " Plug 'tomasr/molokai'
        " Plug 'lifepillar/vim-solarized8'
    
        " utilities
        Plug 'https://github.com/vim-scripts/fcitx.vim'
        Plug 'christoomey/vim-tmux-navigator'
        Plug 'bronson/vim-trailing-whitespace'
        Plug 'cohama/lexima.vim'
        Plug 'tyru/caw.vim'
        Plug 'tpope/vim-surround'
    
        " dependency for language plugins
        " Plug 'thinca/vim-quickrun'
        " Plug 'Shougo/vimproc'
        " Plug 'Shougo/unite.vim'
        " Plug 'osyo-manga/shabadou.vim'
        " Plug 'osyo-manga/vim-watchdogs'
        " Plug 'scrooloose/nerdtree'
        " Plug 'jistr/vim-nerdtree-tabs'
    
        " C++
        " Python
        Plug 'prabirshrestha/async.vim'
        Plug 'prabirshrestha/vim-lsp'
        Plug 'prabirshrestha/asyncomplete.vim'
        Plug 'prabirshrestha/asyncomplete-lsp.vim'
        Plug 'w0rp/ale'
    
        " R
    
        " Documentation
        " Plug 'rhysd/devdocs.vim'
        Plug 'KabbAmine/zeavim.vim', {'on': [
                \   'Zeavim', 'Docset',
                \   '<Plug>Zeavim',
                \   '<Plug>ZVVisSelection',
                \   '<Plug>ZVKeyDocset',
                \   '<Plug>ZVMotion'
                \ ]}
    
    call plug#end()
    
    
    "-------------------------
    " PLUGIN SETTINGS
    "-------------------------
    """"" vim-trailing-whitespace
    " erase white space at the end of the line
    augroup space
        autocmd!
        autocmd BufWritePre * :FixWhitespace
    augroup END
    
    """"" lexima.vim
    " parentheses
    let g:lexima_enable_basic_rules = 1
    let g:lexima_enable_newline_rules = 1
    
    """""" vim-lsp
    let g:lsp_diagnostics_enabled = 1     " enable diagnostics support
    let g:lsp_signs_enabled = 1           " enable signs
    let g:lsp_diagnostics_echo_cursor = 1 " enable echo under cursor when in normal mode
    let g:lsp_virtual_text_enabled = 0    " disable in-place error notification
    let g:lsp_highlights_enabled = 1
    let g:lsp_textprop_enabled = 1
    
    nnoremap <Space>ld :LspDefinition<CR>
    " back to the original place by typing Ctrl-o
    nnoremap <Space>lf :LspDocumentFormat<CR>
    nnoremap <Space>lh :LspHover<CR>
    nnoremap <Space>lr :LspReferences<CR>
    " completion by C-p, selection by C-n, C-p, choosing by C-y, Enter
    
    if executable('clangd')
        augroup lsp_clangd
            autocmd!
            autocmd User lsp_setup call lsp#register_server({
                        \ 'name': 'clangd',
                        \ 'cmd': {server_info->['clangd']},
                        \ 'whitelist': ['c', 'cpp', 'objc', 'objcpp'],
                        \ })
            autocmd FileType c setlocal omnifunc=lsp#complete
            autocmd FileType cpp setlocal omnifunc=lsp#complete
            autocmd FileType objc setlocal omnifunc=lsp#complete
            autocmd FileType objcpp setlocal omnifunc=lsp#complete
        augroup end
    endif
    
    if executable('pyls')
        augroup lsp_pyls
            autocmd!
            autocmd User lsp_setup call lsp#register_server({
                        \ 'name': 'pyls',
                        \ 'cmd': {server_info->['pyls']},
                        \ 'whitelist': ['python'],
                        \ })
            autocmd FileType python setlocal omnifunc=lsp#complete
        augroup end
    endif
    
    """"" asyncomplete.vim
    inoremap <expr> <Tab>   pumvisible() ? "\<C-n>" : "\<Tab>"
    inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
    inoremap <expr> <cr>    pumvisible() ? "\<C-y>" : "\<cr>"
    imap <c-space> <Plug>(asyncomplete_force_refresh)
    autocmd! CompleteDone * if pumvisible() == 0 | pclose | endif
    
    """"" ale
    let g:ale_lint_on_save = 0
    let g:ale_lint_on_text_changed = 0
    let g:ale_lint_on_insert_leave = 0
    " let g:ale_sign_column_always = 1
    " let g:ale_sign_error = '>>'
    " let g:ale_sign_warning = '--'
    
    augroup compileflag-text
        autocmd!
        autocmd BufNewFile,BufReadPost * call s:compileflag_text(expand('<afile>:p:h'))
    augroup END
    
    function! s:compileflag_text(loc)
        let files = findfile('compile_flags.txt', escape(a:loc, ' ') . ';', -1)
        for i in reverse(filter(files, 'filereadable(v:val)'))
            let g:ale_cpp_clang_options = system("cat " . i . "| tr '\\n' ' '")
            let g:ale_cpp_gcc_options = system("cat " . i . "| tr '\\n' ' '")
        endfor
    endfunction
    
    """"" cppman
    augroup cppmanref
        autocmd VimEnter * call system("cppman -s cppreference.com")
        autocmd VimLeave * call system("cppman -s cplusplus.com")
    augroup END
    autocmd FileType cpp set keywordprg=:term\ cppman
    
    "-------------------------
    " KEY MAPPINGS
    "-------------------------
    let mapleader = "\<Space>"
    inoremap <silent> jj <ESC>
    inoremap <silent> っｊ <ESC>
    inoremap <silent> kk <ESC>
    inoremap <silent> hh <ESC>
    nnoremap ; :
    nnoremap j gj
    nnoremap k gk
    nnoremap 0 g0
    nnoremap $ g$
    nnoremap gj j
    nnoremap gk k
    nnoremap g0 0
    nnoremap g$ $
    vnoremap j gj
    vnoremap k gk
    vnoremap 0 g0
    vnoremap $ g$
    vnoremap gj j
    vnoremap gk k
    vnoremap g0 0
    vnoremap g$ $
    nnoremap <C-h> <Nop>
    " copy / cut to system clipboard
    nnoremap <Space>y "+y
    nnoremap <Space>d "+d
    nnoremap <Space>p "+p
    nnoremap <Space>P "+P
    vnoremap <Space>y "+y
    vnoremap <Space>d "+d
    vnoremap <Space>p "+p
    vnoremap <Space>P "+P
    vnoremap <Space>x "+x
    " comment / uncomment
    nmap ,c <Plug>(caw:hatpos:toggle)
    vmap ,c <Plug>(caw:hatpos:toggle)
    " reset search highlight
    nnoremap <Esc><Esc> :noh<CR>
    " do not use ex mode
    nnoremap Q <Nop>
    
    """"" vim-tmux-navigator
    " seamless pane moving between vim and tmux
    let g:tmux_navigator_no_mappings = 1
    nnoremap <silent> <M-j> :TmuxNavigateDown<CR>
    nnoremap <silent> <M-k> :TmuxNavigateUp<CR>
    nnoremap <silent> <M-h> :TmuxNavigateLeft<CR>
    nnoremap <silent> <M-l> :TmuxNavigateRight<CR>
    inoremap <silent> <M-j> <Esc>:TmuxNavigateDown<CR>
    inoremap <silent> <M-k> <Esc>:TmuxNavigateUp<CR>
    inoremap <silent> <M-h> <Esc>:TmuxNavigateLeft<CR>
    inoremap <silent> <M-l> <Esc>:TmuxNavigateRight<CR>
    
    """"" caw.vim
    " comment out lines by typing ,c
    
    """"" vim-surround
    " surround selected text by typing S", S', S{, S<b>, etc.
    " unsurround text by typing ds', etc.
    " change surrounding by typing cs'" (' --> "), etc.
    
    """"" cppman
    " search by typing shift-k
    " http://ja.stackoverflow.com/questions/33212
    command! -nargs=+ Cppman silent! call system("/home/tak0kada/dotfiles/neovim/plugins/cppman/tmux-cppman" . expand(<q-args>))
    autocmd FileType cpp nnoremap <silent><buffer> K <Esc>:Cppman <cword><CR>
    autocmd FileType cpp vnoremap <silent><buffer> K <Esc>:Cppman <cword><CR>
    
    """"" zeavim.vim
    " search for document out side of vim, in the stand alone application zeal
    nmap gz <Plug>Zeavim           " <leader>z (NORMAL mode)
    vmap gz <Plug>ZVVisSelection   " <leader>z (VISUAL mode)
    " nmap gzz <Plug>ZVMotion          " gz{motion} (NORMAL mode)
    " nmap gZ <Plug>ZVKeyDocset       " <leader><leader>z
    
    """"" devdocs.vim
    " search for document onside of vim, in the webbrowser
    " autocmd Filetype nmap K <Plug>(devdocs-under-cursor)
    
    
    "-------------------------
    " SEARCH
    "-------------------------
    set incsearch
    set hlsearch
    set smartcase
    set ignorecase
    set showmatch
    
    
    "-------------------------
    " APPEARANCE
    "-------------------------
    syntax on
    set number
    set guicursor=
    autocmd OptionSet guicursor noautocmd set guicursor=
    
    set background=dark
    colorscheme kalisi
    " colorscheme hybrid
    " colorscheme molokai
    " colorscheme solarized8_dark_low
    
    " color the line which the cursor is on
    set cursorline
    highlight LineNr ctermfg=241
    highlight CursorLineNr ctermfg=233 ctermbg=0 cterm=NONE
    
    set tabstop=8 shiftwidth=4 expandtab smartindent
    " print line at 80th caracter from left
    set colorcolumn=80
    
    " config used by vim-indent-guides
    " draw line to visualize indent
    let g:indent_guides_enable_on_vim_startup = 1
    " draw guide at 1st character
    let g:indent_guides_start_level = 1
    " guide width
    let g:indent_guides_guide_size = 1
    " turn off default color setting
    let g:indent_guides_auto_colors = 0
    if g:colors_name == 'kalisi'
        hi IndentGuidesOdd ctermbg=236
        hi IndentGuidesEven ctermbg=237
        hi ColorColumn ctermbg=235
        " make background transprant
        if !has('gui_running')
            augroup seiya
                autocmd!
                autocmd VimEnter,ColorScheme * highlight Normal ctermbg=none
                autocmd VimEnter,ColorScheme * highlight LineNr ctermbg=none
                autocmd VimEnter,ColorScheme * highlight SignColumn ctermbg=none
                autocmd VimEnter,ColorScheme * highlight VertSplit ctermbg=none
                autocmd VimEnter,ColorScheme * highlight NonText ctermbg=none
            augroup END
        endif
    " elseif g:colors_name == 'hybrid'
    "    hi IndentGuidesOdd ctermbg=236
    "    hi IndentGuidesEven ctermbg=237
    endif
    
    "cursor position does not shift even if there are characters such as "□" or "○"
    " if exists('&ambiwidth')
    "     set ambiwidth=double
    " endif
    
    " lightline print information at the bottom low
    set guifont=Ubuntu\ Mono\ derivative\ Powerline\ Regular
    set laststatus=2
    set noshowmode
    let g:lightline = {
        \'colorscheme': 'solarized',
        \'component': {
            \'readonly': '%{&readonly?"":""}',
            \},
        \ 'separator': { 'left': "\ue0b0", 'right': "\ue0b2" },
        \ 'subseparator': { 'left': "\ue0b1", 'right': "\ue0b3" }
        \}
    
[/code]

追記 (2019/07/26): pythonのファイル編集時は後ろの文字列は消えませんでした。vimの問題ではなくclangdの設定の問題かも知れません。


CC BY-SA 4.0
2019-07-14T21:34:15.373
56644
2022-08-19T01:56:18.727
2022-08-19T01:56:18.727
3060
20997
question
vim clang neovim
neovimでの補間確定時、後ろに続く文字が削除されてしまう


ここにあるとおり、

[code]

    let g:lsp_text_edit_enabled = 0
    
[/code]

とすると改善されるかもしれません。  
<https://github.com/prabirshrestha/vim-lsp/issues/431>


CC BY-SA 4.0
2019-12-25T11:26:10.680
61764
2019-12-25T11:26:10.680
37204
56644
answer