Vim “有没有办法关掉?”;附加到寄存器?

Vim “有没有办法关掉?”;附加到寄存器?,vim,Vim,发件人:help“A “只有当您这样说时,Vim才会填充这些寄存器。将它们指定为小写 替换先前内容的字母或作为大写字母附加 添加到以前的内容” 有没有办法关掉这个 这非常烦人:当我按住shift键键入双引号“以附加到寄存器时,通常情况下我按住shift键的时间太长,并输入“a”而不是“a”(因此它附加到寄存器a而不是完全替换它)如果您希望实现@romainl建议的内容,则可以在六行中完成(如果您不介意使用幻数、保留不需要的变量并在运算符挂起模式下重新映射,则为三行): 。但是这个解决方案有一个缺

发件人:help“A

“只有当您这样说时,Vim才会填充这些寄存器。将它们指定为小写 替换先前内容的字母或作为大写字母附加 添加到以前的内容

有没有办法关掉这个


这非常烦人:当我按住shift键键入双引号“以附加到寄存器时,通常情况下我按住shift键的时间太长,并输入“a”而不是“a”(因此它附加到寄存器a而不是完全替换它)

如果您希望实现@romainl建议的内容,则可以在六行中完成(如果您不介意使用幻数、保留不需要的变量并在运算符挂起模式下重新映射,则为三行):


。但是这个解决方案有一个缺点:你现在失去了在按下
a
之间无限期等待的能力(除非你想
设置notimeout
,它本身就有问题)。

我最后写了一个小补丁,添加了一个“registerappend”选项

…使用此功能,您可以
:设置noregisterappend
以禁用它

diff -r 4cb1f10316ca -r aedf9e836670 src/ops.c
--- a/src/ops.c Thu Oct 11 04:44:33 2012 +0200
+++ b/src/ops.c Tue Oct 16 01:28:47 2012 -0700
@@ -894,7 +894,8 @@ get_yank_register(regname, writing)
     else if (ASCII_ISUPPER(i))
     {
    i = CharOrdUp(i) + 10;
-   y_append = TRUE;
+   if(p_regappend)
+       y_append = TRUE;
     }
     else if (regname == '-')
    i = DELETION_REGISTER;
diff -r 4cb1f10316ca -r aedf9e836670 src/option.c
--- a/src/option.c  Thu Oct 11 04:44:33 2012 +0200
+++ b/src/option.c  Tue Oct 16 01:28:47 2012 -0700
@@ -2068,6 +2068,9 @@ static struct vimoption
                (char_u *)NULL, PV_NONE,
 #endif
                {(char_u *)2000L, (char_u *)0L} SCRIPTID_INIT},
+    {"registerappend", NULL,  P_BOOL,
+               (char_u *)&p_regappend, PV_NONE,
+               {(char_u *)TRUE, (char_u *)TRUE} SCRIPTID_INIT}, 
     {"relativenumber", "rnu", P_BOOL|P_VI_DEF|P_RWIN,
                (char_u *)VAR_WIN, PV_RNU,
                {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
diff -r 4cb1f10316ca -r aedf9e836670 src/option.h
--- a/src/option.h  Thu Oct 11 04:44:33 2012 +0200
+++ b/src/option.h  Tue Oct 16 01:28:47 2012 -0700
@@ -495,6 +495,7 @@ EXTERN char_u   *p_popt;    /* 'printoptions'
 EXTERN char_u  *p_header;  /* 'printheader' */
 #endif
 EXTERN int p_prompt;   /* 'prompt' */
+EXTERN int p_regappend;    /* 'registerappend' */
 #ifdef FEAT_GUI
 EXTERN char_u  *p_guifont; /* 'guifont' */
 # ifdef FEAT_XFONTSET

这可能是硬编码的。您可能会将所有的
“Xy
映射到
”Xy
,但更积极地训练手指肯定更聪明。
diff -r 4cb1f10316ca -r aedf9e836670 src/ops.c
--- a/src/ops.c Thu Oct 11 04:44:33 2012 +0200
+++ b/src/ops.c Tue Oct 16 01:28:47 2012 -0700
@@ -894,7 +894,8 @@ get_yank_register(regname, writing)
     else if (ASCII_ISUPPER(i))
     {
    i = CharOrdUp(i) + 10;
-   y_append = TRUE;
+   if(p_regappend)
+       y_append = TRUE;
     }
     else if (regname == '-')
    i = DELETION_REGISTER;
diff -r 4cb1f10316ca -r aedf9e836670 src/option.c
--- a/src/option.c  Thu Oct 11 04:44:33 2012 +0200
+++ b/src/option.c  Tue Oct 16 01:28:47 2012 -0700
@@ -2068,6 +2068,9 @@ static struct vimoption
                (char_u *)NULL, PV_NONE,
 #endif
                {(char_u *)2000L, (char_u *)0L} SCRIPTID_INIT},
+    {"registerappend", NULL,  P_BOOL,
+               (char_u *)&p_regappend, PV_NONE,
+               {(char_u *)TRUE, (char_u *)TRUE} SCRIPTID_INIT}, 
     {"relativenumber", "rnu", P_BOOL|P_VI_DEF|P_RWIN,
                (char_u *)VAR_WIN, PV_RNU,
                {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
diff -r 4cb1f10316ca -r aedf9e836670 src/option.h
--- a/src/option.h  Thu Oct 11 04:44:33 2012 +0200
+++ b/src/option.h  Tue Oct 16 01:28:47 2012 -0700
@@ -495,6 +495,7 @@ EXTERN char_u   *p_popt;    /* 'printoptions'
 EXTERN char_u  *p_header;  /* 'printheader' */
 #endif
 EXTERN int p_prompt;   /* 'prompt' */
+EXTERN int p_regappend;    /* 'registerappend' */
 #ifdef FEAT_GUI
 EXTERN char_u  *p_guifont; /* 'guifont' */
 # ifdef FEAT_XFONTSET