Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将vim中的命令s映射到:w_Vim_Terminal_Osx Elcapitan - Fatal编程技术网

将vim中的命令s映射到:w

将vim中的命令s映射到:w,vim,terminal,osx-elcapitan,Vim,Terminal,Osx Elcapitan,如何将vim中的命令S映射到:w 我尝试了其他线程的所有功能,但在Mac OS X El Capitan中似乎没有任何功能。 这在以前的版本中应该是有效的,但我尝试过,没有成功 noremap <silent> <C-S> :update<CR> vnoremap <silent> <C-S> <C-C>:update<CR> inoremap <silent> <C-S>

如何将vim中的
命令S
映射到
:w

我尝试了其他线程的所有功能,但在Mac OS X El Capitan中似乎没有任何功能。

这在以前的版本中应该是有效的,但我尝试过,没有成功

noremap  <silent> <C-S>    :update<CR>
vnoremap <silent> <C-S>    <C-C>:update<CR>
inoremap <silent> <C-S>    <C-O>:update<CR>
noremap:更新
vnoremap:更新
inoremap:更新

关于这个话题,我能找到的所有东西都已经有好几年了,不再有用了。我可以找到一根线或一根线,但它们都已经三年多了,不再工作了。这就是为什么我要求使用当前版本的Mac OS X(El Capitan)

中的
C
代表控制,而不是命令。如果要映射命令+S,则需要
。(不,我不知道D代表什么。)

请注意,这仅适用于。命令密钥不会传递给终端应用程序


  • 来自Romaill的答案让我走上了正确的轨道,但不幸的是,这对我并不适用(OS X Sierra,MBP 2017)。还使用(任意)键F6作为中间映射:

    将以下行添加到~/.vimrc

    nnoremap <F6> :w<CR>
    
    nnoremap:w
    
    在Iterm2:

    • 快捷方式:cmd-s
    • 操作:发送转义序列
    • Esc+:[17~


    希望这有帮助。

    完全可以通过使用Iterm2和自定义映射键映射绑定映射
    cmd+s
    或任何
    cmd
    组合

    因此,要映射
    cmd+s
    以保存在终端vim中,首先需要更改Iterm2配置:

    • 转到
      首选项->按键
      ,按下窗口底部的
      +
      按钮,然后添加键盘快捷键并选择名为
      的操作,使用“vim”特殊字符发送文本
      和特殊字符:
      \
      (注意
      \
      前缀),如下所示:

    • 其次,转到vim配置并添加如下映射:
    noremap:w
    inoremap:wi
    
    请注意,Iterm2会将击键
    cmd+s
    转换为
    ctrl+s
    ,并将其直接发送到vim。因此,您可以考虑其他事项。例如,您可以禁用
    cmd-w
    (通常会关闭Iterm2中的窗口)并以
    的形式直接发送到vim以拆分窗口,在这种情况下,您不需要在vim端更改任何内容,只需将
    映射到Iterm2中的
    \
    。此外,您可以禁用
    cmd+p
    以防止讨厌的Iterm2打印对话框,并在vim中调用:fzf o类似的东西

    唯一的缺点是您需要单独创建所有地图:

    顺便说一句,如果您想映射一些“非常特殊”的键,如
    cmd+/
    (例如,使用NERDCommenter注释行),则需要使用“Send Scape sequence”操作执行稍微不同的键映射:

    然后,在vim中,设置
    ^[/
    按键的映射(请注意,按
    然后按
    可生成特殊的
    ^[/code>符号)


    我误解了你的问题是关于MacVim的,但你在终端中谈论的是vim。我删除了我的答案,因为它没有意义。好的。我非常感谢你的非常透彻的回答。我试图让终端vim识别Cmd-S,但我还没有想出一种方法。MacVim处理了它,但终端vim也没有ndle它,或者我试过的终端(终端和iTerm2)正在狼吞虎咽并没有传递它。我将终端中当前的Cmd-S命令重新映射到另一个键,但Vim仍然没有使用映射。感谢您向我们展示如何在Vim中使用Cmd+S进行保存。您介意解释第4点吗?我认为使用Cmd+S进行保存是非常自然的。它只需要两次按键,而Vim方式是需求4.只是想知道为什么即使vim鼓励我们用最少的按键来完成工作,它也不是首选?1.它在当时不存在也没关系。它现在存在,使用它应该会有任何伤害。2.当它做完全相同的事情时,它如何更具表现力和强大?3.vimrc存在是有原因的。我们可以定制vim以一种对我们更舒适的方式运行,而不会失去vim电源。
    nnoremap <F6> :w<CR>
    
    noremap  <silent> <C-s> :w<CR>
    inoremap <silent> <C-s> <ESC>:w<CR>i