私はしばしば次を押します:
<Ctrl> V
ビジュアルブロッキングモードに入り、熱強調表示- (行の先頭に挿入)をクリックし
<shift>-i
て内容を入力します(この時点で最初の行には変更は表示されますが、他の行には変更は表示されません)。 - その後、クリックして通常
<Esc>
モードに戻ります。
をクリックすると、<Esc>
挿入した内容が他の行ごとに配置されることがわかります。
私が望むのは、最初の行だけでなく、入力したときに各行の変更を視覚的に確認することです。それは可能ですか?
テキストを追加- 変えたい部分だ。最初の行だけでなく、すべての行にスペースをすぐに表示したいです。
打って脱出- 各行にスペースが追加されます。このようなことがより早く起こることを願っています。
私はこの例でやっていることを達成するためにそれを使用できることを知っています>>
。私は、変更したいことを説明するために簡単な例を選択しました。
ありがとうございます!
答え1
これをあなたのvimrc:
nmap <buffer> <silent> <expr> <F12> InsertCol()
imap <buffer> <silent> <expr> <F12> InsertCol()
function! InsertCol()
let w:first_call = exists('w:first_call') ? 0 : 1
"if w:first_call
" startinsert
"endif
try
let char = getchar()
catch /^Vim:Interrupt$/
let char = "\<Esc>"
endtry
if char == '^\d\+$' || type(char) == 0
let char = nr2char(char)
endif " It is the ascii code.
if char == "\<Esc>"
unlet w:first_call
return char
endif
redraw
if w:first_call
return char."\<Esc>gvA\<C-R>=Redraw()\<CR>\<F12>"
else
return char."\<Esc>gvlA\<C-R>=Redraw()\<CR>\<F12>"
endif
endfunction
function! Redraw()
redraw
return ''
endfunction
次に、いつものCtrl-vIようにを押し、次にを押しますF12。各キーストロークに変更されたすべての行を挿入して表示します。
F12Iメモ:毎回押すよりも押して挿入モードに入ると、スクリプトが良いでしょう。たぶん、startinsert
コマンドの組み合わせでvnoremap
これを行うことができます。