首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在撤销方面,vim中的“改变”的定义是什么?

在撤销方面,vim中的“改变”的定义是什么?
EN

Stack Overflow用户
提问于 2015-08-27 11:04:23
回答 1查看 148关注 0票数 0

我正在尝试理解vim中的多级撤销。我打开vim并输入:

代码语言:javascript
复制
1
2
3
4
5
6
7

然后我输入:

代码语言:javascript
复制
:u 1

我收到消息:

代码语言:javascript
复制
0 changes; before #1  22:53:11

当我输入的时候:

代码语言:javascript
复制
:u 2

我看到:

代码语言:javascript
复制
E830: Undo number 2 not found

我的理解是,在编辑模式下输入的每个vi命令或字符都被视为“更改”,但很明显事实并非如此。

有经验丰富的vim专家可以澄清吗?

EN

回答 1

Stack Overflow用户

发布于 2018-02-15 08:07:32

您可以像这样修改撤消行为(在~/.vimrc中):

代码语言:javascript
复制
inoremap <BS> <c-g>u<BS>
inoremap <CR> <c-g>u<CR>
inoremap <del> <c-g>u<del>
inoremap <c-w> <c-g>u<c-w>

有关更多信息,请参阅::h i_Ctrl-g_u并阅读vim wiki上的此链接。

如果你使用像我这样的补全插件,你必须做更多的事情。我使用的是deoplete,在这种情况下,我必须这样做:

代码语言:javascript
复制
" <CR>: close popup and save indent.
" Now each Enter creates a undo point ":h i_Ctrl-g_u"
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
function! s:my_cr_function()
  return deoplete#mappings#smart_close_popup() . "\<C-g>u\<CR>"
endfunction
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32240001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档