質問はかなり古いと答えとしてマークされているという事実にもかかわらず、私はあなたが提供されたノーマルモードのコマンド、使用することができると言って答えを拡張したいと思いますスヴェンMarnachにnnoremap
そうように:
:nnoremap <C-Up> <Up>ddp<Up>
:nnoremap <C-Down> ddp
これにより、ファイル内でCtrl+UpおよびCtrl+を使用して行を移動できDownます。ただし@"
、これにより、最後にコピーされた文字列/単語/文字などを格納するレジスタが上書きされます。したがって、「(reg)before」コマンドdd
とp
コマンドを追加することで、これを修正できます。
:nnoremap <C-Up> <Up>"add"ap<Up>
:nnoremap <C-Down> "add"ap
ここでは、"a
削除および貼り付けコマンドの前に追加して、行を@a
レジスタに格納します。これにより、デフォルトのコピーレジスタが上書きされません。ただし、@a
レジスタの内容を上書きする可能性があります(誰が知っていますが、ユースケースで重要な目的で使用できますが、このステップは少し妄想的です。必要に応じてスキップできます)、それも修正しましょう:
:nnoremap <silent><C-Up> :let save_a=@a<Cr><Up>"add"ap<Up>:let @a=save_a<Cr>
:nnoremap <silent><C-Down> :let save_a=@a<Cr>"add"ap:let @a=save_a<Cr>
(<silent>
コマンドが下部のメッセージ行にエコーされないようにするために必要です。)
これで、キーボードショートカットを使用してファイル内の行を移動できる2つのマッピングができました。あなたは、ボタンを再定義することができ、私が使用Alt+ j/kされるであろう、<A-j>
そして<A-k>
それらのコマンドのために。ただし、すべてのターミナルエミュレータがAltキーマッピングAFAIKをサポートしているわけではありません。
git config --global core.editor <whatever>
、またはを含めることで一度に多くのこと(gitを含む)に対してエディターをgit用に構成できexport EDITOR=<whatever>
ます.bashrc
。