読者です 読者をやめる 読者になる 読者になる

sed でマッチした行だけ標準出力する

マッチした行だけを出力するためには -n オプションと p コマンドの両方が必要。

$ sed -n -e '/nobody/p' /etc/passwd
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false

そもそも sed は、取り込んだ全てのデータを標準出力するデフォルト挙動がある。それを -n オプションによって抑制することができる。これとは別に、p コマンドはマッチした行を出力する。

参考: SoftwareDesign 2013年9月号

arch, gnome, terminal, vim, tmux, clipboard setup

arch 入れた。gnome 入れた。ターミナルで vim 使う。* にヤンクする。クリップボードにコピーされない。悲しい。

$ vim --version
...
-clipboard
-xterm_clipboard
...

コピーされそうな気配が無い。オプションを足して、コンパイルしなおす。

クリップボードオプション有りで Vim をコンパイルする

$ sudo abs extra/vim
$ cd /var/abs/extra/vim  # 私は /var/abs 配下で一般ユーザーに編集権限を持たせてます

abs 最高。tarball 触りたくない。

.. vim-build .. ./configure らへんにコンパイルオプションを追加する。

$ vi PKGBUILD
...
    --with-x \      # これを追記しました
    --with-gnome \  # これを追記しました

makepkg でコンパイル。-s は依存解決を含める。-i はそのままインストールの「イ」。

$ makepkg -s -i

古いバイナリをきれいさっぱり置き換えてくれる感じがすごくいい・・

$ vim --version
...
+clipboard
+xterm_clipboard

ヨッシャー。

ここまでで、vim の * レジスタが X のクリップボードと仲良くなってるはず。(vim の clipboard オプションに unnamed が必要)

tmux のコピーモードを Vi にし、コピーしたものをクリップボードにつっこむ

つづいて tmux で vim みたいなコピーができるようにもする。tmux は最近使い始めたターミナル系便利ツール。べんり。

要るもの。

$ sudo pacman -S tmux xclip

tmux が 1.8 以上であることを確認。でも arch を使っているとパッケージが古いと感じることが無い。debian とは違う。

$ tmux -V
tmux 1.8

.tmux.conf を編集。

$ vi ~/.tmux.conf

# emacs じゃなくて vi モードを使います
set-window-option -g mode-keys vi

# コピー開始を Vim のヴィジュアルモード開始みたいにします
bind-key -t vi-copy 'v' begin-selection

# コピー終了を Vim のヴィジュアルモードヤンクみたいにします ついでに内容を X のクリップボードに突っ込みます
bind-key -t vi-copy 'y' copy-pipe "xclip -i -selection clipboard"

# スペースキーのコピー開始を unbind します
unbind -t vi-copy Space

# お好みで。
# unbind -t vi-copy Enter

tmux で config をリロードする(PREFIX + :source-file ~/.tmux.conf)。 するとコピーモード開始後(PREFIX + [ )、画面をVim のように動き回れるではないか。/ で検索もできるし、v で選択開始、y でコピーもできるではないか。ヨッシャーもうこれ。