Vimの行末にある改行を削除して、次の行を現在の行に追加する方法はありますか?
例えば:
Evaluator<T>():
_bestPos(){
}
行をコピーして前の行に貼り付けることなく、これをすべて1行にまとめたいと思います。カーソルを各行の最後に置いてキーを押し、次の行をカーソルのある行にジャンプさせることができるようです。
最終結果:
Evaluator<T>(): _bestPos(){ }
これはVimで可能ですか?
Vimの行末にある改行を削除して、次の行を現在の行に追加する方法はありますか?
例えば:
Evaluator<T>():
_bestPos(){
}
行をコピーして前の行に貼り付けることなく、これをすべて1行にまとめたいと思います。カーソルを各行の最後に置いてキーを押し、次の行をカーソルのある行にジャンプさせることができるようです。
最終結果:
Evaluator<T>(): _bestPos(){ }
これはVimで可能ですか?
回答:
最初の行にいる場合、(大文字)Jを押すと、その行と次の行が結合され、改行が削除されます。これをカウントと組み合わせることもできるので、を押す3J
と3行すべてが結合されます。
gJ
Vimがを使用するときに追加することを選択する可能性のあるスペースの追加は避けますJ
。
V
(Visual Line Mode)を使用して参加したいすべての回線を選択してから、J
またはgJ
:join
と:join!
、それはカーソルの位置を維持するラインに参加し、合流点で任意のスペースを確保していません。次のようにマッピングすることもできます:nnoremap <Leader>j :joing<cr>
およびnnoremap <Leader>gj :join!<cr>
。
もちろん。Vimは\ n文字を改行として認識します。そのため、単に検索して置換することができます。コマンドモードで次のように入力します。
:%s/\n/
V
-isualブロックを選択してそれを置き換えることができます。
他の回答で述べたように、(大文字)J
とsearch + replace for \n
は、通常、改行文字を削除し、行を連結するために使用できます。
ただし、最後の行の末尾の改行文字を削除するには、Vimでこれを行う必要があります。
:set noendofline binary
:w
:set noendofline
なしで動作しないのはなぜbinary
ですか?
以下のすべては、カーソルが最初の行にあると想定しています。
通常のマッピングを使用する:
3Shift+J
Exコマンドの使用:
:,+2j
これはの略語です
:.,.+2 join
次のショートカットでも入力できます。
3:j
さらに短いExコマンド:
:j3
:j!3
改行を削除する行でA(行末に追加、挿入モードにする)を押してから、削除を押します。
:help 'backspace'
他のシェルツールを使用してもかまわない場合は、
tr -d "\n" < file >t && mv -f t file
sed -i.bak -e :a -e 'N;s/\n//;ba' file
awk '{printf "%s",$0 }' file >t && mv -f t file
ggVGJ
です。