web-dev-qa-db-ja.com

通常モードでvimでラインを壊す方法は?

通常モード(挿入モードまたはコマンドラインモードに入る)を終了せずに、(カーソルの位置で)行を2行に分割したいと思います。これは可能ですか?

現在、目的の場所に移動し、「i」を押して挿入モードに入り、「Enter」を押して行を2つに分割し、「esc」を押して通常モードに戻ります。

最大行長を設定したり、構文などを実行したりするつもりはありません。通常モードを終了せずに、1行を2行に分割したいだけです。 「J」は、カーソルが置かれている行をその下の行に結合します。これは便利です。逆に、1つのコマンドで1行を2つに分割したい。

38
Ted

これを試して:

:nnoremap <NL> i<CR><ESC>

次に、行を分割するときはいつでもCtrl-Jを押します。

39
Amardeep AC9MF

単一のキーコマンドはわかりませんが、「r」を実行してから「Enter」を実行して行を分割することがよくあります。

「r」は、挿入モードに入らずに、カーソルの下の現在の文字を置き換えます。文字を置き換えたくない場合、これはあなたが望むものではないかもしれません...

34
Andy White

カーソルを所定の位置に置き、...

  r<Enter>
21
SergioAraujo

他の回答と同様ですが、現在の文字を置き換えません。

R<enter>

再マップは必要ありません。

18
Martin Lyne

私の知る限り、これは挿入モードに入らないと不可能です。ただし、次のようなマクロを使用できます(Zを使用するキーに置き換えます)

nmap Z i<cr><esc>k$

基本的に、これはキー「Z」をマップして挿入モード「i」に入り、キャリッジリターン「<cr>」を挿入し、挿入モード「<esc>」を終了し、行「k」を上って最後に行の終わり '$'

2
kkress

この重複した質問によると: Vimで挿入モードに入らずにカーソルがある場所に改行を挿入するにはどうすればよいですか?

Vim内から、次のように入力します。

:map g i[Ctrl+V][Enter][Ctrl+V][Esc][Enter]

これにより、GキーがマクロIにマップされます[Enter] [Escape]

2
Fosco

録音が使えます。

  1. 改行を挿入する場所にカーソルを置きます。
  2. qaと入力して、レジスタaへの記録を開始します(必要に応じて、a以外の別のレジスタを使用できます)。
  3. 次に、i(挿入モードに切り替えます)と入力します。 Return (改行を挿入)、 escape (挿入モードを終了します)、q(記録を終了します。)

これで、@aaは録音を開始したときに使用したレジスタ番号)と入力してこの一連のキーを呼び出すことができます。カーソルを移動して改行を挿入し、次のように入力します。 @a

1
Carl G