text - 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...
感谢您的任何帮助!
解决方案
调试它的一个很好的起点可能是在 vim 说它已被编辑之后比较原始版本和修改版本。
要查看更改,请git diff
在文件受 VCS 控制或不受控制时使用vim -d original_copy edited_copy
。
diff-ed 字符应该让您了解可能导致此问题的代码的副作用。如果您无法弄清楚,请在此处粘贴差异。
推荐阅读
- ios - super initWithFrame 从 -traitCollection 返回 nil,这是不允许的
- asp.net - ReCaptcha v3 在本地工作,但不能在远程服务器上工作(500 内部服务器错误)
- reactjs - 来自 Enzyme 的浅不渲染 jxs 组件,只返回一个空对象
- c++ - QTableVIew 对列进行多重排序
- angular - Cytoscape.js Breathfirst 布局
- java - 为什么 @Value 在 Spring Core 和 Spring Boot 中的工作方式不同?
- apache-camel - Apache Camel:使用简单的包含设置布尔标头
- python - 使用 xml-rpc (python) 版本 14 从销售订单创建发票
- javascript - 如何检查 innerHTML 是否为空?
- node.js - 如何访问其他文件中的 dotenv 变量