来自:help“A
“仅当您这样说时,Vim才会填充这些寄存器。请将它们指定为小写 字母替换以前的内容或要追加的大写字母 他们以前的内容“
有没有办法将其关闭?
这非常令人讨厌:当我按住shift键入双引号“以附加到寄存器时,通常情况下我持续转换一段时间太长并输入”A而不是“a(所以它< em>追加注册一个而不是替换一起完成
答案 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