0

来自:帮助“A

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

有没有办法关闭它?

这太烦人了:当我按住 shift 输入双引号 " 以附加到寄存器时,通常情况下我将 shift 保持一瞬间太久并输入 "A 而不是 "a (所以它附加到寄存器 a而不是完全替换它)

4

2 回答 2

2

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

let s:capshift=char2nr('A')-char2nr('a')
for s:ch in range(char2nr('A'), char2nr('B'))
    execute 'nnoremap "'.nr2char(s:ch).' "'.nr2char(s:ch-s:capshift)
    execute 'vnoremap "'.nr2char(s:ch).' "'.nr2char(s:ch-s:capshift)
endfor
unlet s:capshift s:ch

. "但是这个解决方案有一个缺点:你现在失去了在按下和之间无限期等待的能力A(除非你想要set notimeout它自己有问题)。

于 2012-10-06T08:57:03.437 回答
0

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

...有了这个你可以:set 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
于 2013-01-25T05:49:29.763 回答