0

from:help "A

「Vimはあなたがそう言うときだけこれらのレジスターを埋めます。以前の内容を置き換えるために小文字として、または以前の内容に追加するために大文字としてそれらを指定してください。 」

これをオフにする方法はありますか?

非常に煩わしいです。Shiftキーを押しながら「doublequote」と入力してレジスターに追加すると、シフトを1秒間保持しすぎて、「a」の代わりに「A」と入力することがよくあります(したがって、レジスターに追加します。完全に置き換えるのではなく)

4

2 に答える 2

2

@romainlが提案したことを実装したい場合は、6行で実行できます(マジックナンバーを使用してもかまわない場合は3行、不要な変数を残し、オペレーター保留モードで再マッピングします):

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 に答える