1

我想映射一个 Shift + Insert,因为我通常会粘贴代码进行学习(或者甚至拿一些 stackoverflow 的问题来准备答案)。但正如为 .cpp 和 .h 所映射的那样,粘贴的代码看起来很乱。

例子:

1  class A {
2 }
3 public:
4     class B {
5     }
6             // ...
7             //     };
8             //         static void f();
9             //             // ...
10             //             };
11             //             )

来自问题的原始代码将嵌套类导入命名空间 - C++

class A {
public:
    class B {
        // ...
    };
    static void f();
    // ...
};

为避免这种情况有必要运行::set paste.

所以,问题是,如何映射一个 Shift + Insert,就像imap <S-Insert> <Esc>:set paste<CR>i在这里传递 Shift + Insert 到它的自然行为,即粘贴然后返回并:set paste!返回?

Obs.: { 被映射到断行和放置和结束},与那种映射一起粘贴的文本会被弄乱。

谢谢。

4

2 回答 2

3

来自:help 'paste'

由于在 'paste' 处于活动状态时映射不起作用,因此您需要使用 'pastetoggle' 选项通过某个键切换 'paste' 选项。

所以解决方案是例如

:set pastetoggle=<F12>

并在粘贴时使用以下顺序:(<F12>i粘贴)<Esc><F12>

于 2012-08-01T14:07:08.653 回答
1

Vim 自己的特殊寄存器*+允许通过终端绕过不稳定的粘贴。"*p从 X 选择寄存器"+p粘贴和从剪贴板粘贴。在 Windows 中,这些都链接到同一个 IIRC。

于 2012-11-20T07:44:33.853 回答