例えば、以下のように4行あるとします
一行目…二行目…三行目…四行目
にリバースさせたい
4行目 3行目 2行目 1行目
Vimではどうすればいいのでしょうか?
104 Jichao 2010-09-17
ファイル内のすべての行を反転させるには、次のようにします
:g/^/m0
説明はこちらをご覧ください
:help 12.4
これはまた、線の範囲だけを反転させる方法を示しています
96 garyjohn 2010-09-18
目的の行を選択して !
を押し、その結果表示されるプロンプトで :'<,'>!tac
のように tac
を使って行をパイプする。詳細は man tac
を参照してください
79 Rhys Ulerich 2012-08-16
Mac OS Xではtac
は存在しませんが、tail -r
を使っても同じ効果が得られます
:%!tail -r
これもビジュアルモードではうまく機能しています
:'<,'>!tail -r
tail(1)
のマンページより抜粋
r オプションは、入力を行ごとに逆順に表示します。さらに、このオプションは -b, -c, -n オプションの意味を変更します。r オプションが指定された場合、これらのオプションは、表示するバイト数、行数、または 512 バイトブロックを指定する。r オプションのデフォルトは、入力のすべてを表示することである
37 Thomas Perl 2013-06-03
コマンド :Rev[erse]
と vimrc
のためのオプションのマッピングなので、このレシピの明らかでないステップを覚えて実行する必要はありません
" Reverse the lines of the whole file or a visually highlighted block.
" :Rev is a shorter prefix you can use.
" Adapted from http://tech.groups.yahoo.com/group/vim/message/34305
command! -nargs=0 -bar -range=% Reverse
\ let save_mark_t = getpos("'t")
\<bar> <line2>kt
\<bar> exe "<line1>,<line2>g/^/m't"
\<bar> call setpos("'t", save_mark_t)
nmap <Leader>r :Reverse<CR>
xmap <Leader>r :Reverse<CR>
(:xmap
はビジュアルモード用にマッピングするが、セレクトモード用にはマッピングしない、:help mapmode-x
は印刷可能な文字をマッピングするためにアドバイスしているように)
(に基づいています。http://tech.groups.yahoo.com/group/vim/message/34305 )
4 Aaron Thoma 2012-02-09
ビジュアルモードをより快適にお使いいただくために。 1.反転させたい選択範囲の上の行番号を :set nu
で指定します。 2.Shift-V
で反転させたい選択範囲を強調表示 (ビジュアルモード)。 3.:g/^/m <Line number from step 1>
ビジュアルモードでは、3からコマンドを入力すると自動的に:'<,'>g/^/m <Line number>
と表示されることに注意してください
このコマンドは選択範囲を一行ずつ指定した行番号に移動させることで動作します。2 番目の項目が指定された行番号に押し込まれると、 1 番目の項目が行番号 + 1 に押し込まれます。次に 3 番目のコマンドが 1 番目と 2 番目の項目を押し下げ、 リスト全体が 1 行目の行番号に押し込まれるまで続けます
3 horta 2016-06-13
あなたが3行目にいるとしましょう。と入力してください
:3,6g/^/m2
1 SergioAraujo 2018-02-17