我是vim的初级用户,我有点困惑。看起来Vim比Geany慢。这是一个非常显着的差异。当我在Geany中按住任何键时,它会打印它而没有任何延迟(例如llllllll)。在Vim中它很慢并且跳跃。与Geany相比,vim中的自动完成功能非常糟糕。我以为Vim和光一样快。它看起来似乎并非如此。有什么建议可以改变它,让vim更快吗?
这是我的_vimrc文件:
" This must be first, because it changes other options as side effect
set nocompatible
" Use pathogen to easily modify the runtime path to include all
" plugins under the ~/.vim/bundle directory
call pathogen#helptags()
call pathogen#infect()
" change the mapleader from \ to ,
let mapleader=","
" Quickly edit/reload the vimrc file
nmap <silent> <leader>ev :e $MYVIMRC<CR>
nmap <silent> <leader>sv :so $MYVIMRC<CR>
set hidden
set nowrap " don't wrap lines
set tabstop=4 " a tab is four spaces
set backspace=indent,eol,start
" allow backspacing over everything in insert mode
set autoindent " always set autoindenting on
set copyindent " copy the previous indentation on autoindenting
set number " always show line numbers
set shiftwidth=4 " number of spaces to use for autoindenting
set shiftround " use multiple of shiftwidth when indenting with '<' and '>'
set showmatch " set show matching parenthesis
set ignorecase " ignore case when searching
set smartcase " ignore case if search pattern is all lowercase,
" case-sensitive otherwise
set smarttab " insert tabs on the start of a line according to
" shiftwidth, not tabstop
set hlsearch " highlight search terms
set incsearch " show search matches as you type
set history=1000 " remember more commands and search history
set undolevels=1000 " use many muchos levels of undo
set wildignore=*.swp,*.bak,*.pyc,*.class
set title " change the terminal's title
set visualbell " don't beep
set noerrorbells " don't beep
set nobackup
set noswapfile
filetype plugin indent on
autocmd filetype python set expandtab
if &t_Co >= 256 || has("gui_running")
colorscheme badwolf
endif
if &t_Co > 2 || has("gui_running")
" switch syntax highlighting on, when the terminal has colors
syntax on
endif
" Vim can highlight whitespaces for you in a convenient way:
set list
set listchars=tab:>.,trail:.,extends:#,nbsp:.
set pastetoggle=<F2>
set mouse=a " Enable mouse
set encoding=utf-8
set langmenu=en_US
let $LANG = 'en_US'
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
set autochdir " working directory is always the same as the file you are editing
noremap <F5> :w !python %<CR>
inoremap <F5> <ESC>:w !python %<CR>
nmap <leader>t :NERDTree<CR>
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
set guifont=Hack:h10:cDEFAULT
let g:Powerline_symbols = 'fancy'
set laststatus=2
python from powerline.vim import setup as powerline_setup
python powerline_setup()
python del powerline_setup
filetype plugin on
set omnifunc=syntaxcomplete#Complete
au CompleteDone * pclose
set completeopt=longest,menuone,preview
set guioptions-=T
set nofoldenable " disable folding
nmap <silent> ,/ :nohlsearch<CR>
答案 0 :(得分:8)
这可能是很多事情,不一定是Vim的错。实际上它不太可能是vim的错。
首先,了解Vim的速度有多快:使用vim -u NONE
运行并注释掉.vimrc中的所有内容 - 然后做一件似乎很慢的事情。
在没有-u NONE
的情况下运行并进行比较。它应该同样快,或者某些插件自动加载并导致问题。如果是这样,请尝试暂时将文件从~/.vim/bundle
目录移开。
接下来,取消注释.vimrc的一半并检查它是否会导致缓慢。继续评论/取消注释,直到找到确切的行。
谷歌引起这种缓慢的路线并找出是否有替代方案。
我猜你可能会对每个滚动进行一次昂贵的操作,例如检查文件语法。
最好一步一步地追捕缓慢。
另一个问题可能是终端和/或驱动程序较慢(因此将Vim与GVim进行比较)。如果您的终端具有花哨的字体,透明度,小字体和大屏幕尺寸,终端可能非常非常非常慢。
答案 1 :(得分:3)
如果你像我一样在终端中使用vim(而不是GVim),我只是发现了,尝试,看起来很不错:
在〜/ .vimrc中添加:
你的〜/ .screeenrc中的设置timeoutlen = 1000
设置ttimeoutlen = 0
和这个(甚至更重要):
maptimeout 0
自从我这样做以来,一切都更好。
答案 2 :(得分:0)
在我的vimrc中添加以下配置后,我的vim开始运行,当您使vim整天/一周不间断地运行,并经常打开和关闭许多不同的文件时,这非常有用。
function! CloseHiddenBuffers()
" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" close any buffers hidden
" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
let open_buffers = []
for i in range(tabpagenr('$'))
call extend(open_buffers, tabpagebuflist(i + 1))
endfor
for num in range(1, bufnr("$") + 1)
if buflisted(num) && index(open_buffers, num) == -1
exec "bdelete ".num
endif
endfor
endfunction
au BufEnter * call CloseHiddenBuffers()
答案 3 :(得分:0)
我有一个类似的问题,即粘贴文本段落或仅以典型速度打字会导致vim停止运行。
您可以对.vimrc
进行故障排除,如果是,请查看this question来查看哪些插件运行缓慢。您也可以跳过故障排除,而使用neovim,它与vim和异步程序完全兼容。
开始使用输入滞后后,问题就消失了。它使用一个异步库libuv
,即same library powering node。我使用的是与vim相同的.vimrc
(已复制到~/.config/nvim/init.vim
),所以这与不同的插件无关。我还在Ubuntu 20.04和Macos 10.14上都看到了这种响应能力的改进。
我发布此答案是因为我希望它在我上次阅读此问题时已经存在。