Недавно я начал использовать vim/gvim, и у меня возникла эта действительно раздражающая проблема, когда курсоры мигают в конце строки с каждым вводимым символом в режиме вставки.

Посмотрите это видео, и вы поймете, что я имею в виду. https://www.youtube.com/watch?v=LT3yGiXONYk

Когда я запускаю gvim с пустым .vimrc, я не сталкиваюсь с этой проблемой. Я отключил все свои плагины и начал включать их по очереди. Я не мог сказать, был ли единственный плагин, ответственный за это.

Похоже, что все плагины вместе оказывают огромное влияние на производительность vim.

set encoding=utf-8
set fileencoding=utf-8
set shell=/bin/bash
set t_Co=256
set t_ut=
syntax on
set number

set guioptions-=m " No menu bar
set guioptions-=T " No tool bar
set guioptions-=r " No right-hand scroll bar
set guioptions-=L " No left-hand scroll bar

set autoindent " Automatic indentation
set smarttab
set showmatch " Show matching brackets
set ignorecase " Ignore case when searching
set hlsearch " Highlight search terms
set incsearch " Show search matches while typing
set title " Change terminal title
set pastetoggle=<F2> " Enable easy pasting
set nocompatible " Set some better better defaults
set laststatus=2 " Always display status line

" Neccessary for installing vundle
filetype off

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

Bundle 'gmarik/vundle'
Bundle 'bling/vim-airline'
Bundle 'vim-scripts/sudo.vim'
Bundle 'tpope/vim-fugitive'
Bundle 'altercation/vim-colors-solarized'
Bundle 'snipMate'
Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
Bundle 'Lokaltog/vim-easymotion'
Bundle 'kien/ctrlp.vim'
Bundle 'tpope/vim-surround'
Bundle 'tomasr/molokai'
Bundle 'Align'
Bundle 'plasticboy/vim-markdown'
Bundle 'slim-template/vim-slim.git'
Bundle 'scrooloose/nerdtree'
Bundle 'scrooloose/syntastic'
Bundle 'vim-scripts/netrw.vim'
Bundle 'kchmck/vim-coffee-script'
Bundle 'bogado/file-line'
Bundle 'wting/rust.vim'
Bundle 'cespare/vim-toml'
Bundle 'lambdatoast/elm.vim'
Bundle 'tyru/restart.vim'
Bundle 'danro/rename.vim'
Bundle 'tpope/vim-rbenv'
Bundle 'tpope/vim-rails'
Bundle 'tpope/vim-eunuch'
Bundle 'tpope/vim-commentary'
Bundle 'tpope/vim-sleuth'
Bundle 'chase/vim-ansible-yaml'
Bundle 'jdonaldson/vaxe'
Bundle 'Hackerpilot/DCD', {'rtp': 'editors/vim'}
Bundle 'sollidsnake/vterm'
Bundle 'airblade/vim-gitgutter'
Bundle 'bufkill.vim'
Bundle 'tpope/vim-vividchalk'
Bundle 'rking/ag.vim'

call vundle#end()
filetype plugin indent on

colorscheme molokai

" airline
let g:airline_theme="dark"
let g:airline#extensions#tabline#enabled = 1
let g:airline_powerline_fonts=1
let g:airline_enable_fugitive=1

" Custom keybindings
nmap <Tab><Tab> :NERDTreeToggle<CR>
nnoremap <C-Tab> :bnext<CR>
nnoremap <C-S-TAB> :bprevious<CR>
map / <Plug>(easymotion-sn)
omap / <Plug>(easymotion-tn)
map n <Plug>(easymotion-next)
map N <Plug>(easymotion-prev)

" File type specific settings
autocmd FileType ruby setlocal ts=2 sts=2 et sw=2
autocmd FileType python setlocal ts=4 sts=4 et sw=4
autocmd FileType yaml setlocal ts=2 sts=2 et sw=2
autocmd FileType javascript setlocal ts=4 sts=0 noet sw=4

au BufRead,BufNewFile *.md set filetype=markdown
au BufRead,BufNewFile *.cson set filetype=coffee

set backup
set backupdir=~/.vim/backup
set directory=~/.vim/tmp
set tags=./tags

Есть ли способ профилировать vim (не говоря о времени запуска)? У вас есть идея, что это вызывает?

3 ответа3

0

Такое поведение вызвано ошибкой в плагине vim-airline aviation. У меня та же проблема с включенной vim-airline и в соответствии с вашим .vimrc вы используете тот же плагин.

Соответствующая проблема была создана в хранилище vim-airline . Не стесняйтесь комментировать и добавлять детали к этой проблеме, чтобы автор мог исправить ошибку.

0

Я думаю, что ваш лучший вариант - отладить его, следуя процедуре по аналогичному вопросу, который скопирован ниже:

Вы можете следовать инструкциям Vim-FAQ 2.5. Вот некоторые важные части:

2.5. У меня есть (xyz) (некоторые) проблемы с Vim. Как определить, что это проблема с моей настройкой или с Vim? / Нашел ли я ошибку в Vim?

Во-первых, вам необходимо выяснить, есть ли ошибка в реальных файлах среды выполнения или в любом плагине, который распространяется с Vim, или это простой побочный эффект любого параметра конфигурации из вашего .vimrc или .gvimrc. Итак, сначала запустите vim так:

vim -u NONE -U NONE -N -i NONE

это запускает Vim в режиме nocompatible (-N), без чтения вашего файла viminfo (-i NONE), без чтения какого-либо файла конфигурации (-u NONE для не чтения файла .vimrc и -U NONE для не чтения файла .gvimrc) или даже плагин.

Если ошибка не возникает при запуске Vim таким способом, то проблема связана либо с вашим плагином, либо с некоторыми настройками в одном из ваших локальных установочных файлов. Вам нужно выяснить, что вызывает ошибку, попробуйте запустить Vim следующим образом:

vim -u NONE -U NONE -N

Если ошибка возникает, проблема в вашем файле .viminfo. Просто удалите файл viminfo. Если ошибка не возникает, попробуйте:

vim -u ~/.vimrc --noplugin -N -i NONE

Это будет просто использовать ваш .vimrc в качестве файла конфигурации, но не загружать никакие плагины. Если ошибка возникает в этот раз, возможно, ошибка вызвана каким-либо параметром конфигурации в вашем файле .vimrc. В зависимости от длины вашего файла vimrc, может быть довольно сложно отследить источник в этом файле.

Лучший способ - добавить команду: finish к середине вашего .vimrc. Затем перезапустите снова, используя ту же командную строку. Если ошибка все еще возникает, ошибка должна быть вызвана настройкой в первой половине вашего .vimrc. Если этого не произойдет, проблемная настройка должна быть во второй половине вашего .vimrc. Поэтому переместите команду: finish к середине этой половины, из которой, как вы знаете, происходит ошибка, и двигайтесь дальше, пока не найдете проблемный вариант. Если ваш .vimrc имеет длину 350 строк, вам нужно максимум 9 попыток найти линию, которая нарушает работу (на практике это часто можно уменьшить, так как строки часто зависят друг от друга).

Если проблема не возникает, то при загрузке только файла .vimrc ошибка должна быть вызвана плагином или другим файлом времени выполнения (отступ автозагрузки или синтаксический скрипт). Проверьте выходные данные команды: scriptnames, чтобы увидеть, какие файлы были загружены, и для каждого попытайтесь отключить каждый по одному и посмотреть, какой из них вызывает ошибку. Часто файлы, загружаемые vim, имеют простую переменную конфигурации, чтобы отключить их, но вам нужно проверять каждый файл отдельно.

По ссылке есть дополнительная информация, если описанные выше шаги не решают проблему.

0

Похоже, некоторые автокоманды мешают. Возможно, git-gutter, который пытается проверить, не изменился ли буфер? Поэтому, пожалуйста, проверьте ваши автокоманды. Я бы специально проверил автокоманды TextChanged или CursorMovedI. Кроме того, вы можете попытаться отключить выборочные автокоманды, установив параметр eventignore . (Вы также можете установить его на all чтобы отключить все автокоманды.) Другой вариант - установить для параметра verbose какое-то значение и посмотреть, появляется ли что-нибудь при вводе в режиме вставки.

Если это не поможет, вам нужно обратиться к часто задаваемым вопросам.

Смотрите помощь на

:h 'eventignore'
:h 'verbose'
:h 'verbosefile'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .