パスワードを忘れた? アカウント作成
40079 story
OS

(便利で)くだらないVim技は? 48

ストーリー by GetSet

あるAnonymous Coward 曰く、

先日、本家/.および/.Jで(便利で)くだらないUnix技は?」(本家では「(Useful) Stupid Unix Tricks?」)というストーリーが盛り上がっていましたが、本家ではこの盛り上がりの尻馬に乗りたいのか、「(Stupid) Useful Emacs Tricks?:(便利で)くだらないEmacs技は?」や「 (Useful) Stupid Vim Tricks?:(便利で)くだらないVim技は?」というストーリーが立っています。

さすがにUnix技のようにはいきませんが、そこそこに盛り上がっている模様。ということで、/.Jでも便乗して(便利で)くだらないVim技を聞いてみようかと思います。
ちなみに本家では、「:Sex」や「:b#」、「marks」、「ctags」が挙げられています。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • .

    # T/O 制限に引っかかっちゃったよ。
    • by Anonymous Coward
      xp

      よく指がもつれるので世話になります。
      移動コマンド+d,y,p は当たり前だけど
      xpって以外に知られてないかな? と

  • 参考に (スコア:2, 参考になる)

    by bewon (36083) on 2008年11月11日 19時49分 (#1453640) 日記
    貼っておきますね。

    100 Vim commands every programmer should know [catswhocode.com]

    # 20個も使いこなせていないけどID
    # あ、和訳 [jkl.lomo.jp]があった。
    • by Stealth (5277) on 2008年11月12日 12時02分 (#1453898)

      :%s/\r/\r/g     Transform DOS carriage returns in returns (わかんなかった。)

      和訳の方でこんなコト書かれてますが、マッチさせるパターンとしての \r と置換する文字としての \r が違うという点が重要で、やってることは CR → LF の置換ですね。CRLF だと LFLF に変化します。
      全行末が CRLF な時に LF にしたいだけなら :set ff=unix でいいし、CRLF を LF にしたいだけなら (前の項目にある) :%s/\r//g だったりするので、実際に :%s/\r/\r/g する場面ってほとんどないように思います。

      :e! ++enc=utf-8 で強制的に UTF-8 で開き直す、とかが載ってないのがちょっと不満かなぁ。後はウィンドウ間移動は vi 系的に C-w h/j/k/l じゃないのか、とか。

      親コメント
  • by mallard (4364) on 2008年11月11日 19時11分 (#1453620) ホームページ
    というのはもちろんジョークです。
    私は、根っからのVim派

    map g 1G

    が、特にお気に入りです。gで先頭に、Gで末尾に移動できて便利です。
    • Re:Vim自体が(ry (スコア:1, 参考になる)

      by Anonymous Coward on 2008年11月11日 23時35分 (#1453736)
      > map g 1G
      > が、特にお気に入りです。gで先頭に、Gで末尾に移動できて便利です。

      僕もvim大好きですが、このmapやめた方がよくありませんか?
      やってみたけど、gf,gF,g] きかないし、先頭行くだけならgg でいいし。
      デメリットの方が多い気がします。

      vimで気に入ってるのは、:split とかのウィンドウ分割でしょうか。
      あと、teraterm越しのマウス操作とか文字コードの自動識別もやめれませんね。
      cygwin 用ですけど大抵の開発は問題無くごったにできます。

      if $LANG ==# "ja_JP.eucJP"
              set termencoding=euc-jisx0213
      elseif $LANG ==# "ja_JP.SJIS"
              set termencoding=shift_jisx0213
      elseif $LANG ==# "ja_JP.ISO-2022-JP"
              set termencoding=iso-2022-jp-3
      else
              set termencoding=utf-8
      endif

      set encoding=japan
      set fileencoding=japan
      set fileencodings=iso-2022-jp-3,utf-8,euc-jisx0213,euc-jp,shift_jisx0213,cp932
      set fileformats=unix,mac,dos
      set helplang=ja

      if &encoding ==# 'euc-jp'
              set fileencodings-=euc-jp
              set fileencodings-=euc-jisx0213
      elseif &encoding ==# 'cp932'
              set fileencodings-=cp932
              set fileencodings-=shift_jisx0213
      endif

      set term=xterm mouse=nvh
      set showfulltag tags+=tags;

      # あ~、 :make もあった
      親コメント
    • by Anonymous Coward
      vimって何のことだと思ったら要はviのことだったのか............................
      クロスプラットフォームでどんなキーボードでも動く利点は認めるが,今時常用するツールのたぐいではなかろう
      WordMasterやWordStarから何十年遅れてるんだよ!?
      • Re:Vim自体が(ry (スコア:2, 参考になる)

        by sync.neo (16796) on 2008年11月12日 7時25分 (#1453813)
        vim = Vi IMproved ですね。

        確かに元々の vi の古さは認めますが、vim は現代的で高機能なツールですよ。
        各種言語のシンタックスにも対応してるし、縦横のウィンドウ分割や、gui/mouse も使えるし、ほぼ無制限の undo/redo などなど、テキストエディタとしての機能は高度なレベルで完成されてます。むしろ高機能化しすぎて肥大化が心配される程です。 汎用のテキストエディタで、自信を持って vim 以上と言える物は数少ないんじゃないでしょうか。 WordMaster/WordStar は私も遙か昔に使ってましたけど、さすがに比較にもなりませんよ。

        モーダルなのは好みが分かれるかもしれませんが、"閲覧"と"編集"を明確に区別するという点で今でも意味を失ってませんし。

        計算サーバ上の数十M byte の巨大なデータファイルを ssh 端末からサクサク編集できるので、私にとっては手放せないツールの一つです。
        親コメント
      • Re:Vim自体が(ry (スコア:2, 参考になる)

        by Stealth (5277) on 2008年11月12日 11時46分 (#1453891)

        VIM はエスケープシーケンスで IntelliSense もどき (例えば CSS 編集モードではコンテキストに合わせて利用可能なプロパティ名や指定可能な値の一覧を候補として表示) まで実装してしまってるハイレベルなエディタです。
        現行エディタの中では最強クラスの部類に入るものですよ。

        プレーンな vi や nvi 等に対して言うならともかく、現行の VIM 7.x に対して言うのは的外れすぎです。

        親コメント
        • by doda (31157) on 2008年11月12日 16時22分 (#1454111) 日記

          確かに元々の vi の古さは認めますが、vim は現代的で高機能なツールですよ。

          プレーンな vi や nvi 等に対して言うならともかく、現行の VIM 7.x に対して言うのは的外れすぎです。
          うーん。自分にとっては素のvi/nvi等だって十分過ぎる位強力なエディタだと思います。
          エディタに何を求めるかによって違ってくるのでしょうが。

          親コメント
      • by doda (31157) on 2008年11月12日 12時20分 (#1453913) 日記

        クロスプラットフォームでどんなキーボードでも動く利点は認めるが,今時常用するツールのたぐいではなかろう
        今でもviを常用しています。
        Windows用のソフトのソースをいじる時もcygwinのvimで編集して、
        VisualStudioでコンパイル/デバッグを行うなんて事をしています。
        IntelliSenseとかあるので本当はVisualStudioに慣れた方がいいんでしょうが…

        WordMasterやWordStarから何十年遅れてるんだよ!?
        WordStar/WordMasterはまったく使った事が無いのですが、そんなに高機能なのでしょうか?
        例えば、今さっき必要になった作業なのですが、

        set policy id 1 from hogehoge ...
        set policy id 1
        set src fugafuga
        exit
        set policy id 2 from fugafuga ...
        set policy id 3 from fugefuge ...
        set policy id 3
        set dst fugofugo
        exit

        というような調子で数百行あるファイルで、set policy id 数字 from ...という行のみを対象(他の行はいじらない)にして
        行末に連続するスペースがあったら一つにまとめ、スペースが無かったら一つ追加するというのを簡単に出来るのでしょうか?
        viならば、

        :g/set policy id [1-9][0-9]* from/s/ *$//
        でいいのですが、これより簡単に出来るエディタはそんなに多く無いのではないかと思います。

        親コメント
      • by Anonymous Coward
        >WordMasterやWordStarから何十年遅れてるんだよ!?
          両方ともまだあるんですか?
          カーソルの割り付けが嫌だった>WordStar
      • システム障害時等に最少限のリソースで動かせるエディタというのはそれだけで重宝するんだけど……。
        高機能なエディタしか使えないと,システム管理者とかは困ったことになるよ。
        • システム障害時等で最小限のリソースしか使えない時は、viすら動かない事も。
          という訳で、システム管理者は真のUnix標準エディタであるedを使えるようになりましょう…とまでは言いませんが(^^;
          # でも、vi(というかexコマンド)を使いこなせれば、edだって何とかなりますよ
          親コメント
      • by Anonymous Coward
        viとvimの区別がつかない素人はお呼びでない。

        勉強して出直してこい。
  • gg=G
    ci(
    vaB
    なんかをプログラムを書くときによく使います。text-object関係が便利。 あとは*につきますね
  • 羞恥プレイ (スコア:1, おもしろおかしい)

    by Anonymous Coward on 2008年11月11日 19時30分 (#1453632)
    女性の先輩とペアプロ中に:Sexコマンド使いました。
    /Insert
    x
    許可がありません
    ('A`)

    #:Sexコマンドを使ったのは本当。
    #特にリアクションはありませんでしたが。
    #Sexコマンドは結構良く使います。
    #デスマ中なのでAC
    • by strict_ansi (2886) on 2008年11月11日 20時42分 (#1453664)
      「ちょっとここで『:Sex』しますけどいいですか?」
      「そこで『:Sex』してアソコ(※1)を開いてくれませんか?」
      「『:Sex』してソコは開いたまま、下の方イジれるように移動(※2)できますか?」

      こんな会話をしていたのでしょうか?楽しそうですねぇ...

      ※1 : 「アソコ」→ ディレクトリを指すのですよ!
      ※2 : 「下の方をイジれるように移動」→ Ctrl-w ですよ!
      親コメント
  • by mjh (27283) on 2008年11月11日 19時34分 (#1453636) ホームページ
    便利だと思うのは

    vim .

    とか

    :E

    とかでファイラーとして使うときかなぁ。

  • :syntax on しつつ
      $ diff -ruN dirA dirB | vim -R -
    ってのは重宝しています。
  • by imsai (36583) on 2008年11月11日 22時22分 (#1453710)
    無言のアピール: Vim powered [vim.org]
    しかし、世界征服への偉大なる第一歩。

    - HAVE YOU FORGOTTEN SOMETHING? -
  • by dodonga (4178) on 2008年11月11日 23時18分 (#1453730) 日記
     dodongaです。
     
     有ったら良いかなが、実装されて、邪魔に成り下がって(賛否両論)。

     カ~ソルキ~

     以上、駄文でした。
    --
    閑話休題
  • by de-code-cos (32573) on 2008年11月12日 0時02分 (#1453749)
    全く使えないけど、気分転換に・・・ http://www.vim.org/scripts/script.php?script_id=1189 [vim.org]
  • by pipitan (37183) on 2008年11月12日 0時08分 (#1453751)
    T/O
  • by de-code-cos (32573) on 2008年11月12日 21時57分 (#1454405)
    あれ? なんで、:Tlistが出てないの?
  • by Anonymous Coward on 2008年11月11日 18時14分 (#1453603)

    Emacsのとこだけ「(便利で)くだらない」ではありません。 何故そうなっているのは分かりませんが。

  • by Anonymous Coward on 2008年11月11日 19時09分 (#1453618)

    ^[
    普段はEscキーを使っていない。
    PC触りたての頃はemacsのコントロールキー技が好きだった。
    • by sasuga (33103) on 2008年11月11日 20時02分 (#1453648)
      前から気になっていたのですが、Escキーを使う人と^[を使う人とどちらが多いんですかね?
      というわけで、あなたはどっち派か教えてください。

      #ちなみに私は全角半角キーとEscキーを入れ替えた上でEscキーを使っています。
      親コメント
      • by doda (31157) on 2008年11月12日 0時44分 (#1453767) 日記
        自分の場合はどちらでもなく、主にControl-3を使っています。
        あまり知られていないようですがそれなりに汎用的に使えて、自分の知っている範囲では
        • VT200/300シリーズ
        • xterm等のX用端末エミュレータ(これはX自身のキーバインドっぽい)
        • cygwin版gvim(これもX?)
        • PuTTY
        で使えます。
        Tera TermやPoderosaでは標準では使えませんので、インストールしたら
        真っ先にキーバインドをいじって使えるようにしています。
        Tera Termにはそのうち(こっそりと)標準のキーバインドとして入れるかも。

        親コメント
      • by fukapon (4131) on 2008年11月11日 22時47分 (#1453719)
        両方使いますね。
        ESCがXの下にあることになれてきたので、最近はESCかなぁ。

        # リマップ
        親コメント
      • by Anonymous Coward
        emacs 使いですが、^[ です。
        M-x とかも ^[x で打ってます。
        Altつかったほうが簡単な気がするけど、なんかなれちゃった
      • by Anonymous Coward
        > 前から気になっていたのですが、Escキーを使う人と^[を使う人とどちらが多いんですかね?
        > というわけで、あなたはどっち派か教えてください。

        Emacsはメタキー派です。
      • by Anonymous Coward
        noremap <C-@> <Esc>
        noremap! <C-@> <Esc>
        ですね。<C-@>はCtrl-Spaceで入力します。
        Vimのデフォルトの場合、素のEscを入力するとエスケープシーケンスなどの関係で1000msほど入力待ちが発生するのですが、これだとそれを回避できます('ttimeoutlen'などを適宜設定するという手もあります)。

        また最近は面白いプラグインがあるので http://www.vim.org/scripts/script.php?script_id=2425 [vim.org]
        Arpeggionoremap jk <Esc>
        Arpeggionoremap! jk <Esc>
        としてjとkの同時押しに当てるということもできます。
      • by Anonymous Coward
        ^[ 使うように自分を矯正中
  • by Anonymous Coward on 2008年11月11日 19時11分 (#1453619)
    に一票。
    • Re:Vimって何 (スコア:5, おもしろおかしい)

      by Anonymous Coward on 2008年11月11日 19時23分 (#1453626)
      完璧なエディタ(vi)の二倍以上完璧なエディタのことです。

      証明:
      vi は VI(ローマ数字の6)である。
      6は完全数(1+2+3=6)である。ゆえにviは完璧である。

      vim は ローマ数字の994である。
      994は完全数496(1+2+4+8+16+31+62+124+248=496)の二倍に2を加えた数である。

      よって、Vimは、viの二倍完璧であり、しかもおまけが2つもついている。
      親コメント
  • by Anonymous Coward on 2008年11月11日 22時17分 (#1453707)
    なんのコマンドだか分からないけど
  • by Anonymous Coward on 2008年11月12日 9時37分 (#1453834)
    Linuxディストリのとりあえず入ってますなvimだと紹介されたtrickのほとんどが動かなかったりします。
    • by Anonymous Coward
      ubuntuとかだとvim-tinyしかデフォルトで入ってないので、vimパッケージ入れるとできます
  • by Anonymous Coward on 2008年11月12日 13時59分 (#1453992)
    1. ファイルのある場所を編集する。
    2. 同じファイルの別の場所をちょっと参照する。
    3. で、さっき編集していた場所に戻りたい。

    というときに、
        u (アンドゥ)
        Ctrl-r (リドゥ)
    するのは私だけ?
    • 自分も同じような事をします。
      ただ普段使っているのがnviなので、実行するのはuを2回ですが。
      で、たまにcygwinとかでvimを使っている時にも同じ事をやってあせったり(^^;
      # 自分のPCでは.vimrcにset compatibleを入れてあるので大丈夫ですが

      あと、set compatibleしても微妙に動作が違ったりするんですよね。
      その辺りで結構引っかかったりしています。
      親コメント
    • by Anonymous Coward
      :help jumplist
      :help `.
      まあu<C-r>もアリですけどね。
typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...