デフォルトのバッファーに入れずに行を削除するにはどうすればよいですか?
例:
line that will be copied.
line that I want to be substitued with the previous one.
私がやろうとしていること:
yy
dd
p
しかし、Vimは最近コピーされた文字列を削除された(カットされた)文字列に置き換えます。 "1yy
、dd
、"1p
などのバッファを使用できることは知っていますが、コピーした文字列をバッファに入れることを忘れてしまい、最初に内容を貼り付ける必要があります(行コピーされます)してから、必要なもの(以前のものと置き換えたい行)を削除します。
Vi(m)のテキストをコピーせずに本当に削除するにはどうすればよいですか?
別の関連する質問は、挿入モードでWordを削除する方法です?似たようなものが欲しい Ctrl+w。
「ブラックホールレジスタ」"_
を使用して、本当に何かを削除します:"_d
。"_dP
を使用して何かを貼り付け、さらに貼り付けできるようにしておきます。
2番目の質問では、<C-o>dw
を使用できます。 <C-o>
は、挿入モードを離れることなく通常のコマンドを実行するために使用されます。
もちろん、入力を保存するために独自のマッピングをセットアップできます。私はこれらを持っています:
nnoremap <leader>d "_d
xnoremap <leader>d "_d
xnoremap <leader>p "_dP
ブラックホールレジスタ"_
はトリックを行いますが、より良い解決策があります。
p
コマンドを使用して行を入力すると、(volatile)default register""
、これはdd
によって上書きされました。ただし、(不揮発性)ヤンクレジスタ"0
は、削除コマンドdd
によって上書きされません。
したがって、これらはあなたの例に従って使用したいコマンドです:
yy
dd
"0p
それは私がvimについて嫌いなことの1つです...私は.vimrcでdd
をブラックホールレジスタにマッピングすることになりました。
nnoremap d "_d
vnoremap d "_d
次のマッピングが生成されます。
nnoremap x "_x
nnoremap d "_d
nnoremap D "_D
vnoremap d "_d
nnoremap <leader>d ""d
nnoremap <leader>D ""D
vnoremap <leader>d ""d
また、「リーダー」キーをコンマに設定することは良い習慣です。例えば:
let mapleader = ","
let g:mapleader = ","
これらの2つのスニペットにより、「、d」が新しいカットコマンドになります。
共有システムのクリップボード構成でこれらのマッピングを一緒に使用する場合は、詳細を参照してください https://github.com/pazams/d-is-for-delete
"_d
を使用して、ヤンクしたテキストが上書きされないようにすることができます。 "
を使用すると、ヤンクまたは削除したテキストを任意のレジスタに保存できます。また、_
は「ブラックホール」レジスタです。
詳細については、:help "_
または:help deleting
と入力できます
yy
Vx
p
ビジュアルモードの場合、x
は選択を削除します。したがって、行全体を削除する場合は、最初にV
を押してビジュアルモードで行を選択し、次にx
を押します。選択を削除します。