D-S-Up在vim中意味着什么?

时间:2016-01-17 19:26:07

标签: vim macros keyboard-shortcuts

我找到.vimrc文件配置:

" Move selection up/down (add =gv to reindent after move)
:vmap <D-S-Up> :m-2<CR>gv
:vmap <D-S-Down> :m'>+<CR>gv

我知道D-S-Up必须是关键,但关键是什么?

我输入:

:help D-S-Up

什么都没发生

2 个答案:

答案 0 :(得分:2)

  1. :help key-notation告诉您所有<key>符号的含义。

  2. 您不能指望:help D-S-Up做任何事情,因为:

    • 它没有遵循i_ctrl-r
    • 等既定模式
    • 它是一个自定义映射,Vim仅为其自己的命令提供文档。
  3. <D>是Mac键盘上的Cmd键,<S>Shift键,<Up>Up箭头键。

    所以<D-S-Up>表示Cmd + Shift + Up

  4. Cmd密钥仅适用于MacVim GUI。

  5. 非便携式映射毫无价值。

  6. 应该使用:xmap:xnoremap进行可视模式映射,而不是:v*

  7. 默认情况下,应使用非递归映射,除非确实需要递归。

  8. 使用其他人vimrc是一个错误的想法。

  9. 顺便说一下,这些是这些映射的增强版本:

    nnoremap <silent> <D-S-Up>   :<C-u>move-2<CR>==
    nnoremap <silent> <D-S-Down> :<C-u>move+<CR>==
    xnoremap <silent> <D-S-Up>   :move-2<CR>gv=gv
    xnoremap <silent> <D-S-Down> :move'>+<CR>gv=gv
    

    其中:

    • <silent>可防止映射中的命令回显无用的信息,
    • <C-u>删除Vim插入的所有默认范围
    • move-2<CR>m-2<CR>
    • 的更易读的版本
    • ==重新缩进该行,
    • gv=gv重新选择这些行,重新缩进它们,然后重新选择它们。

答案 1 :(得分:1)

查看Move entire line up and down in Vim

在答案中,您可以阅读(关于行:vmap <D-S-Up> :m-2<CR>gv):

  

根据上面的快捷方式,按Cmd-Shift-Up / Down将向上/向下移动块选择。 “D”是MacVim中的Command键,对于Windows,尝试“C”(控制)或“A”(Alt)(例如,将是Control Alt f)。

由于我自己没有Mac,我无法检查,但这肯定是真的。