4

Vim では、行を削除して (ddまたはビジュアル ライン モードで) 行を移動し、カーソルを新しい位置に移動してから、次のpように配置します。

first
second
third

また、カーソルがsecond行にある場合は、 を使用ddpして下に移動できます。

first
third
second

しかし、Emacs + Evil モードでは、行を戻すことが期待どおりに機能しません。たとえば、 を押したときにカーソルが3 番目のiにある場合、次のようになります。p

first
thisecondrd

ヤンクされた行全体を配置するときに、Emacs + Evil モードで新しい行を挿入するにはどうすればよいですか?

4

3 に答える 3

1

その動作が必要な場合は、ヤンクする前に Ca を使用して行の先頭に移動します (^ 悪モードでは、おそらく)。これを頻繁に行う場合は、おそらく独自の yank を考え出すことができますが、それを行う場合は kill 部分で把握する必要があります。(または、ヤンクされたものに改行があるかどうかを確認できますか?)

ちなみに、transpose-lines コマンドがあります (通常の Emacs バインドでは Cx Ct - 誰かがこれを xtl にバインドすることを提案しました - https://github.com/syl20bnr/spacemacs/blob/master/my-keybindings.el )。

于 2014-04-25T01:29:28.640 に答える
0

あなたが対処しようとしている主なユースケースが行を上下に移動することである場合(「ヤンクされた行全体を配置するときに Emacs + Evil モードで新しい行を挿入する方法」というより一般的な質問とは対照的に)、試してみることをお勧めしますmove-text

これは、行を上下に移動するための2 つのコマンド (move-text-upおよび)を提供する非常に小さなアドオン パッケージです。回線のどこにいても、これらを呼び出すmove-text-downことができます。何かを殺したりヤンクしたりする必要はなく、リージョンでも機能します。

たとえばmove-line-down、この状況での呼び出し ( の直後のポイントsecond):

first line
second| line
third line

生産します

first line
third line
second| line

ご想像のとおり、現在の行 (またはリージョン) をn行の上または下に移動するには、適切なコマンドを数値のプレフィックスで呼び出します。

コマンドはデフォルトでバインドさM-upM-downていますが、好みのキーシーケンスに再バインドできるはずです

(define-key evil-normal-state-map "mu" 'move-line-up)
(define-key evil-normal-state-map "md" 'move-line-down)

move-textpackage-installMELPAから可能です。

于 2014-04-25T07:36:28.087 に答える