web-dev-qa-db-ja.com

Vimで行を分割するコマンドはありますか?

Vimでは、 J キーは2行を結合します。 (カーソル位置などで)改行で行を分割するための、同様の組み込みのキーの組み合わせはありますか?

または、それを行うためのキーの組み合わせを定義する最も堅牢な方法は何ですか(挿入モードではなく通常モードで)?

15
Andrew Ferrier

いいえ、そのための組み込みコマンドはありません。

<Space>で分割する場合は、r<CR>を使用します。

---編集---

@ keith-nicholasのコメントで、この質問を思い出しました。 FWIWその間、うまくいけば「ユニバーサル」な方法を思いついた:

function! BreakHere()
    s/^\(\s*\)\(.\{-}\)\(\s*\)\(\%#\)\(\s*\)\(.*\)/\1\2\r\1\4\6
    call histdel("/", -1)
endfunction

nnoremap <key> :<C-u>call BreakHere()<CR>
16
romainl

a EnterEsc カーソルの右側で分割する、またはi EnterEsc 左に分割します。

5
Scott

Vimで行を分割する最も簡単な方法は、通常モードのコマンドgqです(通常モードまたはビジュアルモードで両方の文字をすばやく続けて入力します)。

  • ビジュアルモードでは、選択されているものは何でも分割します。
  • 通常モードでは、gqにモーションを追従します。

たとえば、gqlは、現在設定されている幅に1行を分割します。分割線の幅を現在の設定とは異なるように設定するには、次を使用できます

:set textwidth=<n>

ここで、nは1行に必要な文字数(例:10)で、終了したら通常の幅に戻します。

モーションを使用して通常モードでラインを結合および分割する方法を示すKholidfuによるYoutubeビデオからこの情報を得ました: Vimチュートリアル-ラインを結合および分割

2
vdicarlo

マップを使用して独自に定義できます。たとえばzをコマンドとして定義するには:

:map z i<CTRL+m>
1
suspectus

マクロを記録できます。

通常モードで「q +」と入力して、レコードを開始します。記録するマクロ「i」を押します。次に、もう一度「q」を押して録音を停止します。

マクロを使用するには、通常モードに移動して「@ + letter」と入力します。

私の場合、「b」を使用してこのマクロを使用しました。通常モード「qbiq」でタイプを記録し、通常モード「@b」でタイプを使用します

0
luizhj