#book #実践Vim
## TIP21 ビジュアルな選択範囲の定義
|コマンド | 結果|
|:---|:--|
|ctr-v |矩形選択 |
|gv |前に選択していた箇所を選択する|
(当たり前なvとVは省いた)
```
Select from here to here.
```
vbbで戻って、oを使えばビジュアルモードを抜けなくても選択範囲を指定し直せる。
## TIP22 行指向のビジュアルモードコマンドを繰り返す
インデントを揃えたい
```python
def fib(n):
a, b = 0, 1
while a < n:
print a,
a, b = b, a+b
fib(42)
```
vj
>.
## TIP23 可能ならばビジュアルコマンドではなくオペレーターを優先しよう
タグ内の文字を大文字にしたい
```
<a href="#">one</a>
<a href="#">two</a>
<a href="#">three</a>
```
vit(タグの内容を選択できる) = 「visually select inside the tag」(vitはobsidianだと使えない)
vitUだと、.で繰り返したときにthreeのうち3文字しか大文字にならない
gUitは、できる。
→ 繰り返しを置こうなうのは、基本的にオペレーターコマンドを優先して仕様すべき。
## TIP24 ブロック指向のビジュアルモードで表形式のデータを編集
テーブルを下のように書き換えたい
```
Chapter Page
Normal mode 15
Insert mode 31
Visual mode 44
Chapter | Page
-----------------
Normal mode| 15
Insert mode| 31
Visual mode| 44
```
ctr-v 3j
x...
gv (前に選択していた箇所(矩形選択箇所)を再選択)
r| (|に置換)
yyp(一番上の行をyank)
Vr-(行指定して↑で追加した行を-に置換)
## TIP25 テキスト列の変更
imagesのディレクトリを書き換えたい
```css
li.one a{ background-image: url('/images/sprite.png'); }
li.two a{ background-image: url('/images/sprite.png'); }
li.three a{ background-image: url('/images/sprite.png'); }
```
ctrl-v
jje
c
書き換え
## TIP26 矩形状ではないビジュアルな選択範囲にテキストを追加
行末に;を入れたい。
```
var foo = 1
var bar = "a"
var foobar = foo + bar
```
ctrl-v
jj$
A