今日の午後、本で次の vimscript スニペットに出くわしました。残念ながら、私はそれをうまく機能させていません.誰かが私が間違っていることを教えてくれることを願っています.
vmap <silent> ;h :s?^\(\s*\)+'\([^']\+\)',*\s*$?\1\2?g<CR>
ビジュアル モードでマークアップを強調表示して;hを押すと、次のエラーが表示されます。
Pattern not found: ^\(\s*\)+'\([^']\+\)',*\s*$
vimscript の正規表現方言は少し奇妙で、vimscript 自体は少し異質に見えます。私が知っている限りでは、タイプミスがあります。最初の '+' の後のすべては少し謎です。私の理解では、これはビジュアルモードでの選択を引用されたバージョンに変換する必要があるということです:
<div>
<div class="header">stuff</div>
</div>
に
+ '<div>'
+ ' <div class="header">stuff</div>'
+ '</div>'
崇高に、次の式で検索/置換を実行できます。
/^(.*)$/+'\1'/
これにより、vimscript バージョンが少し冗長に見えます。それでもvimでもできるようになりたいです。
[編集: 上記のスニペットは問題なく動作することがわかりました。私が見ていたテキストには、これらのペアがリストされていましたが、間違ったものを見ていました。下記参照:]
vmap <silent> ;h :s?^\(\s*\)+'\([^']\+\)',*\s*$?\1\2?g<CR>
vmap <silent> ;q :s?^\(\s*\)\(.*\)\s*$?\1+'\2'?<CR>