有没有办法关闭“附加注册?

时间:2012-10-06 08:00:51

标签: vim

来自:help“A

“仅当您这样说时,Vim才会填充这些寄存器。请将它们指定为小写   字母替换以前的内容或要追加的大写字母   他们以前的内容

有没有办法将其关闭?

这非常令人讨厌:当我按住shift键入双引号“以附加到寄存器时,通常情况下我持续转换一段时间太长并输入”A而不是“a(所以它< em>追加注册一个而不是替换一起完成

2 个答案:

答案 0 :(得分: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自己有问题)。

答案 1 :(得分: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