コードブロックを特定の行に移動する最速の方法


8

4、5、6行目にコードがあるとします。次に、このコードのブロックを開始点の9行目に移動し、4、5、6行目も削除します。

これを達成するための最速の方法、つまりキーストロークの最小量は何ですか?カスタム関数の方が適していますか?

回答:


6

4行目の最初から(ESC 4 ESC g gまたはM-4 M-g M-gそこに行くために)、C-3 C-k C-2 C-n C-y(またはESC 3 C-k down down C-y修飾キーを押したままにしたくない場合)これを行います。

頭の中で計算をしたくないが、代わりに視覚的に行を選択したい場合は、

  • 移動するゾーンの先頭に移動します
  • C-SPC マークを設定する
  • 保持するには、最初の行の先頭に移動します
  • C-w 切る
  • カットしたテキストを挿入したい場所に移動します
  • C-y 貼り付ける

柔軟性を失わない限り(たとえば、正確に3行のブロックを頻繁に移動したい場合など)、これを短くする方法はないと思います。移動するブロックの始点、移動するブロックの終点、および目的地の3つの場所を指定する必要があります。上記のシーケンスでは、各場所に単一のキーストロークがあり、それは可能な限り低くなっています。


8

距離が大きくない場合は、move-textを使用できます

ここに画像の説明を入力してください

キーストロークに関して、私にとっては:

  1. 地域を選択:

    C-SPCC-nC-nC-n

  2. 地域を移動:

    H-S-nH-S-nH-S-n

move-text-downにバインドされているH-S-n


およびに数値引数nを指定することもできます。これにより、ステップ(2)がに短縮されます。move-text-downmove-text-upM-3 H-S-n
itsjeyd 2014年

3

関数のようにセマンティックユニットである場合は、expand-regionを使用てブロックをマークできます(パッケージのWebサイトでこれについて詳しく説明しています)。次に、他の応答で説明されているように移動します。ブロックのどこにいるかによって、1回のキーストロークで全体をマークできます。


これを拡張できますか?実際のブロックとはどういう意味ですか?機能ブロックのように?
Edgar Aroutiounian 2014

はい、パッケージで使用されている用語は「セマンティックユニット」であり、単語、行、コードブロック、関数、クラス、ファイル全体を指します。回答を編集して、これをよりよく説明するパッケージへのリンクを含めました。
rlazo

2

を使用evil-modeしている場合は、代わりにex次のコマンドを使用できます:4,6m9m4を行に移動6します9)。


質問とは関係がないのに、viエミュレーションのようなエキゾチックな機能に言及する意味がありません。
Gilles「SO-邪悪なことをやめなさい」2014

2
Gilles:evil-modeはっきりとは分かりませんが、melpaでのダウンロード数は約18,000です。別の回答が使用されましたexpand-region。これも外部パッケージです。Q&Aサイトの場合、異なるパッケージで同じことを達成するために複数の方法を含めることはおそらく良いことです(ただし、いくつかのガイドラインを考え出すのは良いことかもしれません)。
shosti 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.