Emacs には、transpose-words
句読点を保持したまま、カーソルの前の単語をカーソルの後の単語と交換できる便利なコマンドがあります。
たとえば、'<コード>スタック |オーバーフロー' + Mt = '<コード>オーバーフロー スタック|' ('<code>|' はカーソル位置です)。
<a>|<p>
になり<p><a|>
ます。
Vimでエミュレートできますか?を使用できることはわかってdwwP
いますが、句読点ではうまく機能しません。
更新:いいえ、実際dwwP
には解決策ではありません。想像:
SOME_BOOST_PP_BLACK_MAGIC( (a)(b)(c) )
// with cursor here ^
Emacs の Mt は and を交換b
しc
、結果として(a)(c)(b)
.
機能するのは/\w
yiwNviwpnviwgp
. しかし、それは台無し""
にされ"/
ます。よりクリーンなソリューションはありますか?
更新²:
解決済み
:nmap gn :s,\v(\w+)(\W*%#\W*)(\w+),\3\2\1\r,<CR>kgJ:nohl<CR>
不完全ですが、機能します。
私の注意を引いてくれた Camflan に感謝し%#
ます。もちろん、それはすべてwikiにありますが、機能の正確な(Emacs は完全に正しい) 重複の問題を解決できるとは思いませんでしたtranspose-words
。