211

デフォルトのバッファに入れないで行を削除するにはどうすればよいですか?

例:

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)のテキストをコピーせずに実際に削除するにはどうすればよいですか?

もう1つの関連する質問は、挿入モードで単語を前方削除するにはどうすればよいですか?Ctrl+に似たものが欲しいですw

4

8 に答える 8

192

ブラックホールレジスター "_でうまくいきますが、もっと良い解決策があります。

コマンドを使用して行を入力するpと、(揮発性)デフォルトレジスタ ""の内容が貼り付けられます。これは、で上書きされていますdd。ただし、(不揮発性の)ヤンクレジスタ "0から貼り付けることはできます。これは、deleteコマンドによって上書きされることはありませんdd

したがって、これらは、例に従って使用するコマンドです。

yy
dd
"0p
于 2012-12-18T15:52:32.810 に答える
177

「ブラックホールレジスタ」を使用して、"_実際に何かを削除します"_d。何かを貼り付けて、さらに貼り付けるために使用できるようにするために使用します
"_dP

2番目の質問には、を使用できます<C-o>dw挿入モード<C-o>を終了せずに通常のコマンドを実行するために使用されます。

もちろん、タイピングを節約するために独自のマッピングを設定することができます。私はこれらを持っています:

nnoremap <leader>d "_d
xnoremap <leader>d "_d
xnoremap <leader>p "_dP
于 2012-08-16T19:13:18.920 に答える
57

それは私がvimについて嫌いだったことの1つです...私はdd自分の.vimrcのブラックホールレジスタにマッピングすることになり、それ以来人生は良好でした:

nnoremap d "_d
vnoremap d "_d
于 2012-08-16T19:23:30.210 に答える
33

次のマッピングが生成されます。

  • 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

また、「leader」キーをコンマに設定することをお勧めします。例:

let mapleader = ","
let g:mapleader = ","

これらの2つのスニペットにより、「、d」が新しいカットコマンドになります。

これらのマッピングを共有システムのクリップボード構成と一緒に使用する場合は、 https://github.com/pazams/d-is-for-deleteで詳細を参照してください。

于 2015-05-24T13:15:32.460 に答える
10

"_dヤンクされたテキストが上書きされないようにするために使用できます。ヤンクまたは削除されたテキストは、任意のレジスタに保存できます。これは"_気にしないものを送信する「ブラックホール」レジスタです。

詳細については、次のように入力する:help "_か、:help deleting

于 2012-08-16T19:13:08.947 に答える
1

noremap ' "_.vimrcで使用しています

これはの動作を維持するddので、以前と同じようにカットするために使用できます。

しかし、本当に何かを削除したい場合は、プレフィックスを使用してください'。例:'dd'dw

于 2021-04-25T02:11:55.307 に答える
0

私は

nnoremap p "0p
nnoremap P "0P
vnoremap p "0p
vnoremap P "0P
vnoremap x "0x
nnoremap x "0x

名前のないレジスタではなく、常に0レジスタから貼り付けます。xビジュアルモードで使用して、0レジスタに削除します。

于 2022-01-18T00:33:22.377 に答える
-1
yy
Vx
p

ビジュアルモードの場合、xは選択範囲を削除します。したがって、行全体を削除する場合は、最初にを押しVてビジュアルモードの行を選択し、次にを押しxて選択範囲を削除します。

于 2017-11-03T14:41:51.110 に答える