LoginSignup
0
0

More than 1 year has passed since last update.

実践Vimを読んで個人的に今後使うTips覚書

Last updated at Posted at 2023-04-16

実践Vim(Practical Vim)を読んで

emacsからという禁忌の乗り換えを行っておよそ1年程度が経過した。
ある程度は使えるようになってきたか、、、?と思っていたところで
名著と名高い”実践Vim”を読んでみた。
まだ6割(感覚値)もVimの実力を発揮できていないと感じたので
これは、今後個人的に取り入れるべきと思ったTipsをメモとして入力する。
完全に覚書で前提知識などを書いていなかったりするので万が一
これをみて参考にされる際などはご留意お願いしたい。

register貼り付け

yankの保存先

"0 レジスタにはyankされたものが入って、dコマンドでカットされた
ものは入らないので、置換する際に
yiw して目的の単語に移動してdiw"0p
と入力すればdコマンドを利用しても問題ない。
(dでカットされた値は”一時レジスタに格納される)

ただ、自分も筆者の方がおっしゃられているのと同様に
veでヴィジュアルモード選択して上からpを押すのが最も美しく思える。

visual モード

gvコマンドの活用

シンプルにこれは全く使っていなかったが有用だと感じた。
ただ、qwerty配列においてどういう運指が最適なのだろうか、、
g@右人 -> v@左人 とかだろうか、、

oキー

始点と終点を入れ替える。強力無比に思えるが全く知らなかった。

:g(lobal)/{pattern}/[cmd] の活用 (TODO アイテムの収集)

今回のポイントとなるコマンドは以下である。
:g/TODO/yank A
大文字Aとなっているのは理由がある。
複数行をレジスタに格納するためだ。
もし、小文字のaとだけ入力してしまった場合最後の1文のみしか
レジスタには保存されていない。

以下のような例文があったとして

Markdown.dialects.Gruber = {
    lists: function() {
        // TODO: Cache this regexp for certain depths.
        function regex_for_depth(depth) { /* implementation */ }
    },
    "`": function inlineCode( text ) {
        var m = text.match( /(`+)(([\s\S]*?)\1)/ );
        if ( m && m[2] )
            return [ m[1].length + m[2].length ];
        else {
            // TODO: No matching end code found - warn!
            return [ 1, "`" ];
        }
    }
}

"ap の実行結果として
小文字a の場合

            // TODO: No matching end code found - warn!

大文字A の場合

        // TODO: Cache this regexp for certain depths.
            // TODO: No matching end code found - warn!

といった結果となる。
これは:argdoと組み合わせることでプロジェクト全体のTODOを集めることもできる。
また、qaqといったレジスタを空にするといった前処理も必要となる。

あとがき

数ポイント今後使いたいなと思ったTipsを覚書として記した。
何回か手を動かしながら読んでみて、まだ取り入れられていないものなど
頭の片隅に置いておき、使うべき場面が来た際に索引できるといいかも。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0