1つのステートメントが複数の行を取るときに、C内の隣接する行に2つのステートメントを入れ替えます

私は次のコードを持っていると仮定します:

int x;
string s = "some very long "
           " string";

私は次のようなものにならずに、これらの順序を入れ替える1つのコマンドを持っていたいと思います:

string s = "some very long"
int x;
           "string";

それを行う簡単な方法はありますか?

5
C-M-ttranspose-sexps )は役に立ちますか?それは想定されていますが、おそらくCではそうではありません。
追加された 著者 Ryan Eastabrook,
カーソルを置く場所によって異なる場合があります。 EmacsがCでsexpを考慮していることを知らない。おそらくそれはあまり洗練されていないでしょう。他の transpose - * コマンド( transpose-paragraph )のすべてがここで役立つかどうかを見ることができます。とにかく、おそらく、あなたが要求したものを提供するサードパーティ製のライブラリがありますし、うまくいけば誰かがここであなたに知らせるでしょう。
追加された 著者 Ryan Eastabrook,
私は示唆している:1)ステートメントのハイライト2)ステートメントを「ヤンク」3)ステートメントをその新しい場所に「置く」。ステートメントの開始(最初の行?)から最初のセミコロンまでヤンクするマクロを作成したら、次のセミコロンを検索する機能を追加して、改行を1つ前に進めてから貼り付けます。次に、そのマクロを実行したいものに使用することができます。 (おそらく、キーボードやマウスの操作でステップを実行するだけでもっと速くなるでしょう)そのマクロをemacsスタートアップファイルに保存してください
追加された 著者 Alexander Prokofyev,
いいえ、それはまったく違うことをします。
追加された 著者 Josh Belmont,

2 答え

anchored-transpose may be another option.

Cx t を押して2番目の文をマークし、 Cx t を押して Cx t であり、これら2つのステートメントは入れ替えられます。一見すると非常に便利な NOT と思われるので、文章をすばやく表示できる他のパッケージで使用する方が良いでしょう。

編集:私はちょうど anchored-transpose がこの特別な場合の良い解決策ではないかもしれないことに気づいた。領域をすばやくマークする場合は、 C-w を実行して領域を消去して貼り付けることができます。 sexpstatement のようなものが無く、ランダムなテキストしかない場合には、 anchored-transpose

0
追加された