[解決済み] Vimで行全体を上下に移動させる
2022-03-16 17:56:58
質問
メモ帳++で Ctrl + シフト + 上 / 下 で現在の行を上下に移動させることができます。Vimでこれに似たコマンドはないのでしょうか? 私は無限のガイドに目を通しましたが、何も見つかりませんでした。
もしなかったら、どうすればそのキーの組み合わせにアクションをバインドできるでしょうか?
編集:Mykolaの答えは、バッファの最初と最後の行を除けば、すべての行で機能します。最初の行を上に、または下の行を下に動かすと、その行が削除され、下の行を上に動かすと、最初はポーンのように2スペース分ジャンプします。どなたか改善策をご提案いただけないでしょうか?
解決方法は?
.vimrcに以下を記述することで、作業を行うことができます。
noremap <c-s-up> :call feedkeys( line('.')==1 ? '' : 'ddkP' )<CR>
noremap <c-s-down> ddp
行が消えるのはVimのバグのようです。それを回避するためのハックを入れてみました。おそらくもっと正確な解決策があるはずです。
更新情報
Vimのコンビネーションを使うだけでは、原因不明の不具合が多発しています。行抜けや余分な行飛びなどです。
このスクリプトは、.vimrc または ~/.vim/plugin/swap_lines.vim の中に置くことができます。
function! s:swap_lines(n1, n2)
let line1 = getline(a:n1)
let line2 = getline(a:n2)
call setline(a:n1, line2)
call setline(a:n2, line1)
endfunction
function! s:swap_up()
let n = line('.')
if n == 1
return
endif
call s:swap_lines(n, n - 1)
exec n - 1
endfunction
function! s:swap_down()
let n = line('.')
if n == line('$')
return
endif
call s:swap_lines(n, n + 1)
exec n + 1
endfunction
noremap <silent> <c-s-up> :call <SID>swap_up()<CR>
noremap <silent> <c-s-down> :call <SID>swap_down()<CR>
関連
-
[解決済み] Vimエディタを終了するにはどうすればよいですか?
-
[解決済み] Vimで文字を改行で置き換える方法
-
[解決済み] Vim 直前の検索ハイライトをクリアする
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] Vimで行全体を複製する方法は?
-
[解決済み] VimのTabキー==4スペースと中括弧の後の自動インデント
-
[解決済み] Vimで行末に移動するにはどうしたらいいですか?
-
[解決済み] Vimで最も生産性の高いショートカットは何ですか?
-
[解決済み] vimのレジスタはどのように使うのですか?
-
[解決済み】Vimで複数のファイルを効率的に操作する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] YCMのエラーです。ycmdサーバがSHUT DOWN(再起動...ドキュメントに記載されています
-
[解決済み] ~/.vimrcを読み込まない
-
[解決済み] Vimで行のコメント/アンコメントを素早く行う方法は?
-
[解決済み] NERDTreeで拡張子によるファイルのフィルタリングを行うには?
-
[解決済み] VIMでバッファを垂直分割で開く
-
[解決済み] VIMで選択した単語の出現箇所をすべて強調表示するには?
-
[解決済み] vimの "変更可能 "がオフになっている
-
[解決済み] vim エディタで使用される vimrc ファイルを見つけるにはどうしたらいいですか?
-
[解決済み] vimdiff使用時に異なるcolorchemeを読み込む
-
[解決済み] Vimで最近のドキュメントを一覧表示する