IntelliJ IDEA/ Resharper の + またはEclipseの+ + /と同様の方法で、 Vimで行全体を複製するにはどうすればよいですか?CtrlDCtrlAlt↑↓
21 に答える
yyY行をコピーする (ニーモニック: y ank )
または行を削除する(
Vim は、
削除したものをクリップボードのような「登録」にコピーします。切り取り操作のように)
dd
それから
pコピーまたは削除したテキストを現在の行の後に
貼り付ける、またはコピー
または削除したテキストを現在の行の前に貼り付ける
P
通常モード: 他の回答を参照してください。
例の方法:
:t.
行を複製し、:t 7
7行目以降にコピーします。:,+t0
現在の行と次の行をファイルの先頭にコピーします (,+
は range の同義語です.,.+1
)。:1,t$
最初からカーソル位置までの行を最後までコピーします (1,
は range の同義語です1,.
)。
コピーする代わりに移動する必要がある場合は、:m
代わりに を使用し:t
ます。
:g
またはと組み合わせると、これは非常に強力になります:v
。
:v/foo/m$
パターン「foo」に一致しないすべての行をファイルの最後に移動します。:+,$g/^\s*class\s\+\i\+/t.
class xxx
カーソルの直後にフォームの後続のすべての行をコピーします。
参照: :help range
、:help :t
、:help :g
、:help :m
および:help :v
YP
またはYp
またはyyp
.
これ以上簡単なことはありません!通常モードから:
yy
次に、貼り付けたい行に移動し、
p
yy
現在の行を削除せずにヤンクします
dd
現在の行を削除します
p
前の方法のいずれかによって取得さput
れた行
これを行う:
まず、yy現在の行をコピーしてpから貼り付けます。
別の方法が必要な場合:
"ayy
: 行を buffer に格納しa
ます。
"ap
: これにより、バッファの内容がa
カーソルに配置されます。
これには多くのバリエーションがあります。
"a5yy
: これにより、5 行がバッファに格納されa
ます。
詳しくは、" Vim ヘルプ ファイルを参照してください。
yyp-「ヤッピー!」で覚えてください。
数字を間に挟んだ複数行:
y7yp
yyp- 後に貼り付け
yyP- 前に貼り付け
私は好きです: Shift+ v(行全体をすぐに選択し、必要に応じて他の行を選択できるようにするため)、y、p
別のオプションは、次のようにすることです。
nmap <C-d> mzyyp`z
カーソル位置を保持できる利点があります。
<Cx> <Cl>を試すこともできます。これにより、挿入モードから最後の行が繰り返され、すべての行を含む完了ウィンドウが表示されます。ほぼ<Cp>のように機能します
デフォルトは ですがyyp、私はこの再バインドを 1 年ほど使用しており、気に入っています。
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
1 落とし穴: 「p」を使用して行を配置すると、カーソルがある行の後に配置されるため、ヤンクしている行の後に行を追加する場合は、カーソルを行の下に移動しないでください。新しい行を配置する前に。
vi を学び始めた人のために、vi のコマンドと典型的な Windows GUI エディターのカーソル移動およびショートカット キーを並べてリストすることで、vi の優れた紹介を示します。yy(行のコピー)およびp(後に貼り付け)または(前に貼り付け)を含むすべての基本的なコマンドがリストされていますP。
CtrlSublime + Shift+のように、行を複製して現在の like のすぐ下に貼り付けたい場合Dは、これをファイルに追加でき.vimrc
ます。
nmap <S-C-d> <Esc>Yp
または、挿入モードの場合:
imap <S-C-d> <Esc>Ypa
vscode に似たこのマッピングを使用します。役に立つことを願っています!!!.
nnoremap <A-d> :t. <CR>==
inoremap <A-d> <Esc>:t. <CR>==gi
vnoremap <A-d> :t$ <CR>gv=gv