【问题标题】:Vim mapping to copy all text in visual modeVim 映射以在可视模式下复制所有文本
【发布时间】:2011-12-06 21:50:17
【问题描述】:

我想在可视模式下映射 ctrl+a 以选择并复制当前缓冲区中的所有文本。

基本思路是执行:%y*(将所有缓冲区复制到剪贴板)。所以,映射应该是:xmap :%y*(xmap 仅用于可视模式)

但是,每当我运行此映射时,都会显示以下输出:

E492: Not an editor command: '<,'>%y*

而且,我认为 Vim 是对的 :-)。在可视化模式下,按下“:”,会让命令行显示那些令人惊讶的字符:

":'<,'>" 

我可以找到此模式(')的唯一相关信息是:http://vimdoc.sourceforge.net/htmldoc/cmdline.html#v_: (这对我没有帮助)。

问题:我做错了什么(配置...)?我的需要还有其他答案吗(将所有文本复制到剪贴板)?

我正在运行 Vim 7.3,我只在我的 vimrc 中设置了 nocompatible

感谢您的帮助, 汤姆

【问题讨论】:

  • '&lt;,'&gt; 表示选中的区域。
  • 另见:help v_:关于那些“奇怪”的标记......
  • @Sebastian Paaske Tørholm:更准确地说,它指的是选择所延伸的的范围。

标签: vim


【解决方案1】:

用途:

xnoremap <whatever> :<c-u>%y*<return>

附加的 ctrl-u 擦除命令行直到光标为止。

来自 vim 参考:

                            *c_CTRL-U*
CTRL-U  Remove all characters between the cursor position and
        the beginning of the line.  Previous versions of vim
        deleted all characters on the line.  If that is the
        preferred behavior, add the following to your .vimrc: >
        :cnoremap <C-U> <C-E><C-U>

【讨论】:

    【解决方案2】:

    使用以下映射:

    nmap <C-A> ggVGy
    

    它会拉出所有当前文件。顺便说一句,我不确定这正是你想要的。我不明白你为什么想要视觉映射。

    【讨论】:

    • Ctrl+a 在正常模式下默认会增加数字。而且,我认为可视模式是我应该用来“选择”文本的,不是吗?
    • @Tom:您使用可视模式选择文本,并使用y 命令复制(拉动)它。由于您的目标是拉动,因此忘记视觉模式。
    • 顺便说一句,你可以在不通过可视模式的情况下做同样的事情:ggyG
    • 没错。如果你想抽出文本,你肯定要忘记视觉模式。
    • 感谢您的 cmets。这个想法是在正常模式下不覆盖 ctrl+a,已经映射到增量编号。所以我想到了使用可视模式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多