首页 > 解决方案 > Vim,在没有编辑的情况下退出,创建未保存的缓冲区

问题描述

当涉及到 VIM 时,我有一些奇怪的行为。

我期望的行为:编辑文件时,如果处于插入模式并且在退出插入模式时未进行任何文件修改,则应将缓冲区视为“已保存”。

我实际得到的行为:编辑文件时,当我退出插入模式而没有修改时,缓冲区说文件已被编辑。虽然

我通过打开一个干净版本的 vim 测试了这种行为在 vim 中是否正常,看来我期望的行为是默认行为。

这是我的配置片段,我的完整配置在这里:(https://github.com/TheBabu/Config/blob/master/.vimrc)我假设导致这种行为的任何原因都在这里,否则它可能是一个插件

"Setup
set shell=bash
set nowrap
set number
set nocompatible
set noshowmode
set directory^=$HOME/.vim/.swapfiles
set undofile
set mouse=a
syntax on
colorscheme neodark
hi Normal ctermbg=none
sign define transparent_sign
augroup SignColFixAu
    au!
    au BufReadPost *.c,*.cc,*.h,*.cpp,*.hh,*.hpp,*.py,*.js,*.php,*.rs exe "sign place 1111 name=transparent_sign line=1 file=".@%
augroup end
inoremap <cr> <space><bs><cr>
inoremap <esc> ~<bs><esc>
inoremap <expr> <up> pumvisible() ? "\<c-p>" : "~\<bs>\<up>"
inoremap <expr> <down> pumvisible() ? "\<c-p>" : "~\<bs>\<down>"
inoremap <Esc>x <Esc>x

"Tabs
set listchars=tab:➡\ 
set list
set autoindent
set noexpandtab
set tabstop=4
set shiftwidth=4

..SNIP...

"Plugins
Plugin 'VundleVim/Vundle.vim'
Plugin 'scrooloose/nerdtree'
Plugin 'Valloric/YouCompleteMe'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'easymotion/vim-easymotion'
Plugin 'w0rp/ale'
Plugin 'godlygeek/tabular'
Plugin 'LukeLike/auto-pairs'
Plugin 'ananagame/vimsence'
Plugin 'preservim/nerdcommenter'

call vundle#end()
filetype plugin indent on

...SNIP...

感谢您的任何帮助!

标签: textvim

解决方案


调试它的一个很好的起点可能是在 vim 说它已被编辑之后比较原始版本和修改版本。

要查看更改,请git diff在文件受 VCS 控制或不受控制时使用vim -d original_copy edited_copy

diff-ed 字符应该让您了解可能导致此问题的代码的副作用。如果您无法弄清楚,请在此处粘贴差异。


推荐阅读