vim

more-prompt ハック

vim

-- More -- プロンプトが出ているとき、スペースを押しっぱなしにして、メッセージを終了させてしまうことがある。また、そうしてしまわないかと常にビクビクしているのもいやなので、スペースでは more プロンプトを終了しないようにした。 見てみると、既…

fj.editor.vi

vim

http://ftp.jaist.ac.jp/pub/news-archive/fj.editor.vi/ fj.editor.vi のアーカイブをひととおり読んでみた。 面白かったのが: vi にモードはないという主張と showmode に関するこの話題。 http://groups.google.co.jp/group/fj.editor.vi/browse_thread/…

:! や :mak 実行時に以前の画面をクリアするハック

vim

vim で :! や :mak を実行すると、画面に以前のコマンドの出力が残っているので、どこからが今実行したコマンドの出力なのかわかりづらい。そこで以前の画面をクリアするようにした。 --- ../src.orig/ex_cmds.c Sun Apr 23 03:56:56 2006 +++ ex_cmds.c Sat…

altscreen ハック

vim

サスペンドしたときは vim の画面がそのまま残り、vim を終了したときは起動前の画面を復元してほしい。 vim は C-z にもマッピングできるので、そこで t_ti と t_te を空にして、さらに au VimLeavePre などで終了前に t_te を復元すればいいのだが、制御コ…

vi にモードはいくつあるか?(2)

vim

http://d.hatena.ne.jp/odz/20061122/1164261785 open mode とか append mode ってのは単に insert mode をさらに細かく分けているわけで、生粋の vi 使いに聞いたらこの3つを答えるんじゃないかと思うのだがどうだろう。 それは私も分かって書いています。…

vi にモードはいくつあるか?

vim

最近初めて Solaris の vi を使って気がついたのだが、set showmode したときのモード表示がたくさんある。 インサートモードに入るのに使ったキーによって、次のように変わる。 i, I INSERT MODE a, A APPEND MODE o, O OPEN MODE c モーション(1行以内) CH…

vselect

iselect http://www.ossp.org/pkg/tool/iselect/ iselect も素晴らしいコマンドなのだが、デフォルトで入っているシステムはほとんどないため、積極的に使うのはためらわれていた。 そこで vim を使って代替スクリプト vselect を作ってみた。 #!/bin/sh rm …

.vimrc に追加

vim

cnoremap <C-k> <Home>\<<End>\><Left><Left></left></left></end></home></c-k>

open_line について

vim

vim の 'o' と 'O' にカウントを与えると、その後のインサートモードで入力されたテキストがn回挿入される。 しかしそんな操作をしたくなることがどれだけあるだろうか。私ならそんなときは o か O でまず1行挿入し、 その行を yy でヤンクして [count]p で…

Cygwin パス

vim

$ cd 'c:\Program Files' $ ls c:\\windowsとできる。'\' をエスケープと解釈するのはシェルだけであり、中の API は Windows のパスを解釈できるらしい。 Cygwin では /etc/hosts が hosts -> C:\WINDOWS\system32\drivers\etc\hosts と Windows のパスでシ…

検索したときジャンプした行数を表示するハック

vim

/ で検索したとき、もといた位置からどれくらいジャンプしたのかを気になることがあるので、それを表示するようにしてみた。 慣れないとうざい気もするが、慣れの問題だろう。m でマークしたときなども何か表示した方が親切かもしれない。 vi のマークという…

vi in busybox

vim

busybox にも独自の vi が入っている。 制限事項は以下の通り。 /* * Things To Do: * EXINIT * $HOME/.exrc and ./.exrc * add magic to search /foo.*bar * add :help command * :map macros * how about mode lines: vi: set sw=8 ts=8: * if mark[] valu…

オプション'selection'

vim

Vim には 'selection' というオプションがある。 'selection' 'sel' 文字列 (既定では "inclusive") グローバル {Vi にはない} このオプションは、選択時の動作を設定する。これはVisualモードとSelect モードでのみ使用される。 設定可能な値は以下の通り。…

サーバ上のvimでファイルを上書きした時に自動的にブラウザでリロード

vim

キーワード:LD_PRELOAD vim html サーバ Firefox 更新 読み込み リロード miyagawa サーバ上のvimでファイルを上書きした時に自動的にブラウザでリロードできるようにしてみた http://blog.bz2.jp/archives/2006/07/vim.html

Bram Moolenaar works at Google.

vim

http://www.linuxformat.co.uk/blog/?p=168 http://tech.groups.yahoo.com/group/vimannounce/message/152 Bram Moolenaar は現在 google で働いていて、週に一日 Vim の開発をやらせてもらっているらしい。

Free Software Foundation のソースは tabstop=8 で

vim

function! DetectFSF() let i = 1 let l = "" while i <= 10 let l = l . getline(i) let i = i + 1 endwhile if l =~ "Copyright.*Free Software Foundation" set ts=8 return endif endfunctionEmacs の "-*-" にも対応したかったけど面倒なのでやめた。 "…

空行のインデントを自動削除しないハック

vim

Kaoriya 掲示板より 3621.オートインデントONのとき、空白行のインデントを自動削除させない方法は? VIM 6.4を使わせて頂いています。 VIMのオートインデントでは、インデントされている行の末尾で改行し、次の行を空行とするためにそのまま再度改行すると、…

コマンドラインの補完をしているのは ExpandFromContext()

vim

コマンドラインの補完をしているのは ex_getln.c の ExpandFromContext(xp, pat, num_file, file, options)

v_G ハック

vim

Ctrl+v で矩形選択して G したとき、カーソルが1桁目に行ってしまうのが嫌だった。 :set nostartofline を設定すればいいわけだが、無意味にソースを改変。 ところでこのオプションを設定してる人はどれくらいいるのだろう。 --- ../src.orig/edit.c 2006-06…

powerful script

vim

vim の vi_diff.txt が < Commands have been added to form up a simple but powerful script language. --- > Commands have been added to form up a powerful script language.と変更されていてワロタ。

:gomark ハック

vim

マークへジャンプする ex コマンドがないなあと思って愚かにも作ってしまった。 :'a でできたのに。 --- ../src.orig/ex_docmd.c Sat May 6 01:33:19 2006 +++ ex_docmd.c Mon Sep 11 22:09:30 2006 @@ -202,6 +202,7 @@ static void ex_find __ARGS((exarg_…

join したときカーソル位置を動かさないハック

vim

J するとカーソルが移動するのは逆操作を行いやすくするため? Emacs の M-^ も同じ位置にカーソルが移動するな。 @@ -4059,6 +4145,7 @@ int nextsize; /* size of the next line */ int spaces; /* number of spaces to insert */ linenr_T t; + colnr_T c…

:registers ハック

vim

:registers したとき、各レジスタの中身を表す文字列の末尾に色つきの「$」をつけるハック。 @@ -3875,7 +3960,7 @@ msg_putchar(name); MSG_PUTS(" "); - n = (int)Columns - 6; + n = (int)Columns - 1 - 6; for (j = 0; j < yb->y_size && n > 1; ++j) { …

キーボードコレクション

vim

さまざまなキーボードの配列画像があるページ http://www.pfu.co.jp/hhkeyboard/kb_collection/初代 vi が書かれた ADM3A のキーボード配列はこちら。 http://en.wikipedia.org/wiki/Vi これを見るとシフトを押さなくてもコロンが出せるようですな。 キーと…

削除・ヤンクしたテキストを表示するハック

vim

文字単位で1行以内のテキスト(要するに小レジスタ "- に入るようなテキスト)を削除・ヤンクしたときにそのテキストを"[hoge]"という感じで表示するハック。あまり役に立たない。 --- ../src.orig/ops.c Mon May 1 00:13:44 2006 +++ ops.c Sun Sep 10 22:1…

矩形選択時のputハック

vim

サクラエディタふぁんくらぶ part7 >>654 より ちなみに俺はサクラの矩形処理ではコピペ関連が好きだな。 vimで出来るかどうかは知らんが、1行コピーして4行矩形選択して張り付けると4行分張り付けられたり 矩形選択してコピーしたものは、矩形選択せずに張り…

vim の家系図

vim

http://roguelife.org/~fujita/COOKIES/HISTORY/oindex.html また MIT では TECO の直系の子孫として emacs が開発される。今日主要なエディタとして広く認知されている emacs と vi が同じ祖先である TECO から派生した事実は興味深い。 確かに興味深い。 v…

QuickFix プチハック

vim

'previewheight'と同様のオプション'quickfixheight'を追加する。 option.h 636a637 > EXTERN long p_qfh; /* 'quickfixheight' */ option.c 1966a1967,1973 > {"quickfixheight", "qfh", P_NUM|P_VI_DEF, > #if defined(FEAT_WINDOWS) && defined(FEAT_QUIC…

メモ:put {*|+} の実装

vim

レジスタ*のプットは :put * でできるので、まずは :ta ex_put を見てみる。 すぐに do_put() に飛んでいるので do_put にタグジャンプ。 #ifdef FEAT_CLIPBOARD /* Adjust register name for "unnamed" in 'clipboard'. */ adjust_clip_reg(&regname); (voi…

vim + screen + gdbでデバッグしよう

FreeBSD上でvimをデバッグする環境を整えよう。 以下、カレントディレクトリはvimのsrcディレクトリであるとします。 gdbでアタッチ まずは素朴に $ gdb vimとしてみる。vimが立ち上がるが、端末がvimに占居されて しまい、gdbを操作できなくなるので当然ダ…