2009-03-09 6 views
75

可能性の重複:VIMで
How do I insert a linebreak where the cursor is without entering into insert mode in Vim?Vimの分割ラインコマンド

Jは、現在の行に次の行を結合します。指定されたカーソル位置に行を分割する同様のワンキー(または比較的短い)コマンドがありますか?私はそれが単純なマクロで行われることを知っていますが、J -commandが存在する場合は同様の機能があるはずです。私はそれを検索しようとしましたが、答えを見つけることができないようです。

+1

これは役に立ちますか? [Vimでカーソルを挿入モードにしないで改行を挿入するにはどうしたらいいですか?](http://stackoverflow.com/questions/237383/how-do-i-insert-a-linebreak-where-the-cursor – bedwyr

+0

いいえ、私は見逃していた基本コマンドがあったか、ここに他の誰かが知っているかもしれないことが分かりませんでしたか? – dburke

答えて

33

私はこのための単一キーコマンドはないと思います。在庫vimでできることはおそらくです。Escと入力してください。

+1

" i "おそらくもっと良いでしょう – jperelli

+72

より良い: 'r '。 –

+13

r はcharを失いますが、スペースであれば良いです。 – trusktr

17

いいえ。私は今、そのようなコマンドがないと結論づけるのに十分な答えを読んできました。

簡単な回答: 挿入中に「Enter」を押すと実行されます。しかし、あなたが正しいです、それはコマンドモードでそれのための鍵でなければなりません。私も不思議でした。

皆が好きな回避策を持っているので、私は私のものを共有します。私は何かを実行してEscキーに達することを避けることを前提としています。

'X' のさえ改行することができ、挿入文字、あるylprX ...。

したがって、 'yl'は右側の文字にヤンクします。 'p'は文字をペーストし、 'r'はそのcharを置き換えます。新しい文字を入力するだけです。 それはです。エスケープを使ってどれだけ嫌いですか?

(これはところで、「右に移動」のように、「L」だった)

+12

私は機能要求を提出するつもりです。私と一緒にいる人?! – dburke

+2

viをもう一度改善するには? (大きな笑い)。私の推測は、誰もがそれを望んでいて、それが存在しないなら、理由があるはずです。私が本当に望んでいるのは、 "挿入モード"の外にある "n個の文字を挿入する"コマンドです。 – gbarry

+5

おすすめ:http://stackoverflow.com/questions/397229/reaching-up-to-hit-the-escape-key – dreeves

151

rを入力してください。空白はそれになります。それは2回のキーストロークです。

+7

閉じるが、シガーはない。私はしばしば、間にスペースのない2つの隣接するHTMLタグを分割したいと思っています。 – dburke

+3

@dburkeその場合、 '.vimrc'に' s'マッピング(http://vim.wikia.com/wiki/Insert_a_single_character)を入れ、 ''を使用してください。 –

5

分割を追加する場所の正規表現を作成できる場合は、分割することができます。たとえば、あなたがそれぞれセミコロンで行を分割したい場合は、次の置換を使用することができます

% S /を;/^ V^M/G

大きな効果を

0

ジェドの答えが最もあります有用。私は、 "control-V-alternative"、つまりcontrol-Qが必要だと付け加えたいと思います。 %s /;/^ q^m/g

35

私の解決策は、デフォルトのアクション( "man"でカーソルの下にある単語を調べる)、私の以前のエディタではAlt + jとAlt + kを使って行を結合したり分割したりしていました。

:nnoremap K i<CR><Esc> 

これは、3つの迷惑なキーストロークを1つにまとめます。

後に続く空白を取り除くにはもっと洗練された方法がありますが、後書きの空白をすべて書き去ることをお勧めします。

+3

これは素晴らしいことです!通常、誤って 'K'を押すと愚かな' man'ページ機能のために私にとって悲惨ですが、今ではそれを実際に有用なものに置き換えます。 –

+2

これは良い再定義ですが、 'K'のデフォルトの動作は厳密に' man'としか考えてはいけません。多くのプラグインは、コンテキスト言語でドキュメントを検索するために 'K'を再定義します。 PHPでは、例えば、 'K'はphp.netのドキュメントに私を連れて行くでしょう... – progo

8

古いスレッドですが、マニュアルページの参照やそれが行う魔法のために "K"を使用しません。だから、私はvimrcの中に、このマッピングを持っている:

map K i<Enter><Esc> 

「J」が参加しているので、私は考え出し、「K」krackか何かすることができます。 :)

+0

私はと再マッピングしました。これは私にとっては最高の答えです:) –

関連する問題