[解決済み] Vimでのスマートラップ
2023-04-26 09:15:30
質問
Vim にコード行をスマートラップして、インデントしている行と同じインデントを維持する機能があるのかどうか疑問に思っていました。私は e-text editor などの他のテキストエディタでそれに気づき、それが私が見ているものをより簡単に理解するのに役立つことがわかりました。
例えば
<p>
<a href="http://www.example.com">
This is a bogus link, used to demonstrate
an example
</a>
</p>
のように表示されます。
<p>
<a href="somelink">
This is a bogus link, used to demonstrate
an example
</a>
</p>
どのように解決するのですか?
この機能は 2014年6月25日に実装されました。 にパッチ 7.4.338 として実装されました。その後、この機能を改良するパッチがいくつかあり、最後のものは 7.4.354 ですので、このバージョンが必要です。
:help breakindent
:help breakindentopt
以下、vimのヘルプからの抜粋です。
'breakindent' 'bri' boolean (default off)
local to window
{not in Vi}
{not available when compiled without the |+linebreak|
feature}
Every wrapped line will continue visually indented (same amount of
space as the beginning of that line), thus preserving horizontal blocks
of text.
'breakindentopt' 'briopt' string (default empty)
local to window
{not in Vi}
{not available when compiled without the |+linebreak|
feature}
Settings for 'breakindent'. It can consist of the following optional
items and must be seperated by a comma:
min:{n} Minimum text width that will be kept after
applying 'breakindent', even if the resulting
text should normally be narrower. This prevents
text indented almost to the right window border
occupying lot of vertical space when broken.
shift:{n} After applying 'breakindent', wrapped line
beginning will be shift by given number of
characters. It permits dynamic French paragraph
indentation (negative) or emphasizing the line
continuation (positive).
sbr Display the 'showbreak' value before applying the
additional indent.
The default value for min is 20 and shift is 0.
また、これと関連するのが
showbreak
の設定もあり、これはシフト量に指定した文字を付加します。
設定例
" enable indentation
set breakindent
" ident by an additional 2 characters on wrapped lines, when line >= 40 characters, put 'showbreak' at start of line
set breakindentopt=shift:2,min:40,sbr
" append '>>' to indent
set showbreak=>>
動作に関する注意
を指定しない場合
sbr
オプションを指定しない場合、すべての
showbreak
という文字がインデントに追加されます。 削除する
sbr
を削除すると、有効なインデントが 4 文字になります。
showbreak
をインデント無しで使いたい場合は
shift:0
.
また、負のシフトを与えることもでき、その場合は
showbreak
文字、および折り返しテキストを、利用可能なインデントスペースに引き戻す効果があります。
を指定した場合
min
の値を指定した場合、端末の幅が狭いとシフト量がつぶれてしまいますが
showbreak
の文字は常に保存されます。
関連
-
[解決済み] Vimエディタを終了するにはどうすればよいですか?
-
[解決済み] Vimで文字を改行で置き換える方法
-
[解決済み] Vim 直前の検索ハイライトをクリアする
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] Vimで行全体を複製する方法は?
-
[解決済み] Vimで行のコメント/アンコメントを素早く行う方法は?
-
[解決済み] vimにテキストをペーストする際の自動インデントをオフにする
-
[解決済み] Vimで最も生産性の高いショートカットは何ですか?
-
[解決済み】vimの「sudoで書く」トリックはどうやるの?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] vimとnotepad++ [終了しました]。
-
[解決済み] vi/vimで戻る(ctrl+z)方法
-
[解決済み] emacsの "M-x term "はvimにも存在しますか?重複
-
[解決済み] Vimでやり直し(undoアンドゥ)をするにはどうしたらいいですか?
-
[解決済み] Vimで(多くのバッファのうち)1つのバッファを閉じるにはどうすればよいですか?
-
[解決済み] VIM:現在位置からスペースまで削除する
-
[解決済み] VIMで、本当に長い1行を複数の行に分割するにはどうすればよいですか?
-
[解決済み] Vim:letとsetはどう違うの?
-
[解決済み] Vimのfとtコマンドは何をするのですか?
-
[解決済み] VimでのWord Wrap(インデント保持)