【问题标题】:Use <Esc> key to save file with one key press in Insert mode or Normal mode使用 <Esc> 键在插入模式或普通模式下一键保存文件
【发布时间】:2016-04-20 17:19:54
【问题描述】:

我尝试映射我的 键以使用 仅按一键来保存文件。

在普通模式下,它工作至今。

map <Esc> :w <CR>

但我无法在插入模式下映射它, 我尝试了以下命令,但它不起作用

map <Esc> <Esc>[ :w <CR> 

顺便说一句,我只想要一键按下

请给我一些建议,或者如果你知道在 Vim 中使用 One press 保存文件的任何好键

【问题讨论】:

  • 映射中的那些空格是不需要的,实际上可能会干扰您尝试执行的操作,因为它们将作为命令执行(在正常模式下,空格将光标向前移动一个位置)。另外,“[”在您的第二个映射中试图做什么?

标签: vim keyboard-shortcuts


【解决方案1】:
augroup AUTOSAVE
  au!
  autocmd InsertLeave,TextChanged,FocusLost * silent! update
augroup END

自动保存 InsertLeaveTextChangedFocusLost 事件

【讨论】:

    【解决方案2】:

    您一直强调按一下,好像这是您问题中最重要的部分,但重要的部分是插入模式

    :map 是一个递归映射命令,适用于 normalvisualoperator-pending 模式。

    您应该使用:imap — 或其非递归朋友:inoremap — 用于插入模式:

    :inoremap <Esc> <Esc>:w<CR>
    

    我推荐 Ingo 的解决方案。

    【讨论】:

      【解决方案3】:

      请注意,不建议映射&lt;Esc&gt;,尤其是在插入模式下。大多数特殊键(如光标和功能键)由终端作为 转义序列 发送。另一种方法是挂钩InsertLeave 事件:

      :autocmd InsertLeave * silent! update
      

      :update:write 更适合,因为它只在有未持久更新时才真正保存。 :silent! 在缓冲区尚未命名时抑制错误等。

      【讨论】:

      • 不错的建议,谢谢
      猜你喜欢
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多