新着記事

2008年03月23日

vimエディタの入力モードでのIMEの日本語入力のON、OFF切り替え

最近、入力モードで、
Control-^
ってやったら、
日本語入力のON、OFFを切り替えられる事に気づいた。

そうか、そうだったんだ。
全然知らなかったよ。

ちなみに、ノーマルモードで、

Control-^
ってやると、こっちは代替ファイルとの切り替えになります。
たぶん、直前に開いていたファイルが開かれることになるかな。
posted by 小見 拓 at 23:03| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2008年03月21日

vimエディタのヘルプのlocal-additionsの項とか

vimエディタのプラグインをインストールすると、ヘルプの「local-additions」って所に、
ローカルのdocディレクトリに入れたヘルプファイルへのリンクが増える。
:help local-additions
とか、実行すると、確認できる。
(実際には「:helptags」コマンドを実行すると追加されるみたいなのです。)
vimdoc-local-additions.jpg

だから、vimエディタのプラグインをアンインストールしたい時は、
インストールしたファイルを取り除くだけだと不十分で、
「local-additions」の項に消したはずのファイルへのリンクが残ってることがある。

リンクが残ってもたいした害があるわけじゃないけど、
アンインストールする場合は、最後、ローカルのdocディレクトリに、
「:helptags」コマンドを実行しておいた方がいい。

:helptags $HOME/vimfiles/doc

docディレクトリにファイルが無い場合は、エラーが発生してしまうけれど、これは気にしなくていい。
リンクを取り除くという目的は果たされる。
vimdoc-helptags-nofile-error.jpg


以上です。
posted by 小見 拓 at 02:09| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2008年03月18日

vim 7に標準でついてるスペルチェックに少し触れてみました

vimのバージョン7から入っているスペルチェックを少しだけ使ってみました。

1. スペルチェックのエラーの表示

間違っていると思われる語があると、アンダーバーが引かれる。
これは設定によって表示の仕方が変わったりするのかな。MS Wordのスペルチェックエラーの表示に近いですね。

↓ 鹿児島 ならぬ、鹿児鳥
vim_spellcheck_error_found.JPG


2. 修正候補の表示

間違っている語の位置でインサートモードになり、
vim_spellcheck_to_insert_mode.JPG
「Ctrl-x Ctrl-s」と入力すると、修正候補の一覧を表示できる。
vim_spellcheck_display_list.JPG

辞書補完と違って、既に入力された語が間違っている場合にそれを置き換えて、修正する機能です。
辞書補完は入力が終わっていない単語の残り部分を、辞書ファイルの中身で補完する機能でした。


3. 残念ながら、そのままでは日本語の分かち書きには対応できない。

漢字、ひらがな混じりでも、1語として解釈されてしまいました。
英語のスペルチェックにはいまのままでも利用できるのですが、 日本語の文章に赤線引かれるのは気分が良くないですね。
vim_spellcheck_cannot_judge_word.JPG

句読点で区切った場合は判定できます。
vim_spellcheck_can_judge_word_with_canma.JPG

回避策はあるかもしれない。
あるいは、設定をきちんとすれば、うまくチェックできるかもしれない。


以上です。では。
posted by 小見 拓 at 00:18| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2008年03月16日

ノーマルモードでZQで、保存しないで終了

vimエディタのZQ使っていますか?

ノーマルモードで「ZQ」と押すと、 ファイルを保存しないでエディタを終了します。
メモ代わりにvimエディタを立ち上げた時なんかには、 このコマンド便利です。
普段はノーマルモードで作業していることを考えると、 「:q!」より早い。

ZQに対して、保存して終わりたい時は、ZZを使います。 こちらはよく紹介されてますね。

posted by 小見 拓 at 20:32| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2008年02月25日

calendar.vimには日記をつける機能があったらしい。

vimスクリプトによる日付の処理の仕方を学ぼうと考えて、 calendar.vimスクリプトのコードを のぞいてみたら、日記をつける機能がついてて驚いた。

今までカレンダーを表示するだけのスクリプトだとばかり、 思っておりました。

calendar_vim.jpg
 ↓(日付をクリック。)

calendar_vim_diary.jpg

日記の昨日を使うには、「diary」ディレクトリを事前に作成しておく必要がある。
calendar_vim_dialog.jpg

posted by 小見 拓 at 01:03| Comment(1) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2008年02月11日

最近よく見るようになったvimスクリプトのコメントの書き方

所有するサイトの関係上、相当な数のvimエディタのスクリプトを読んでいますが、
最近、このようなコメントの書き方をよく見かけるようになりました。
:if exists('loaded_undobranch_viewer')
    :finish
:endif
:let loaded_undobranch_viewer = 1

:command! -nargs=0 UndoBranchViewer :call s:UndoBranchViewer()

:function! s:UndoBranchViewer()
    :let g:undolistHandlers = [
        \ {'key': 16, 'agent': s:SNR().'AgentUndoPreview', 'key_name': '<c-p>', 'help': 'Undo preview'},
        \ {'pick_last_item': 0},
        \ ]
    :let s:undolists = tlib#cmd#OutputAsList('undolist')
    :call tlib#input#List('s', 'UndoBranch', s:undolists, g:undolistHandlers)
:endfunction

:function! s:AgentUndoPreview(world, selected)
    :return a:world
:endfunction

:function! s:SNR()
    :return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSNR$')
:endfunction

finish
==============================================================

スクリプトのコメントとか、
履歴とか記述。
「finish」と書いて、そこでスクリプトの読み込みを停止、
その後ろにコメントを書くらしい。

コメントアウトする手間もかからず、ハイライトも有効と。

流行ってるの?

posted by 小見 拓 at 00:15| Comment(2) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2008年02月05日

エクスプローラーっぽい挙動のアプリを簡単に構築できるvimスクリプトtlibの紹介

ウィンドウを分割して、片方のウィンドウに何かのリストを表示、選択されたら何かの処理を行うという、
ファイルエクスプローラーとかでよくあるUIを、簡単に構築できてしまうvimスクリプト tlibの使い方を突き止めた。
(vimスクリプト組む人以外には、役に立たない情報ですが)

tlib_sample_view.jpg

で、下が最小のサンプル。
:UndoBranchViewerで起動して、<C-p>で選択した行のメッセージを表示する。
動かすには、もちろん、tlibが必要。

tlib#input#List()に表示する文字列のリストと、
どのキーが押されたら、どのファンクションを呼び出すかのマッピングを渡す。
keyがリストの選択に使うキーで、agentがファンクション。

スクリプトの中で使っている tlib#cmd#OutputAsList()は、
コマンドの結果で文字列のリストを作るコマンドです。

" スクリプトが何度も読まれるのを防止するためのおまじない
:if exists('loaded_undobranch_viewer')
    :finish
:endif
:let loaded_undobranch_viewer = 1

" コマンドの定義
" :UndoBranchViewerってすると、s:UndoBranchViewer()が呼び出される。
:command! -nargs=0 UndoBranchViewer :call s:UndoBranchViewer()

:function! s:UndoBranchViewer()
    :let g:undolistHandlers = [
        \ {'key': 16, 'agent': s:SNR().'AgentUndoPreview', 'key_name': '<c-p>', 'help': 'Undo preview'},
        \ {'key': 21, 'agent': s:SNR().'AgentUndoAndClose', 'key_name': '<c-u>', 'help': 'Undo and close'},
        \ {'pick_last_item': 0},
        \ ]
    :let s:undolists = tlib#cmd#OutputAsList('undolist')
    :call tlib#input#List('s', 'UndoBranch', s:undolists, g:undolistHandlers)
:endfunction

" リストから<c-p>で選択されたときに呼び出される。
:function! s:AgentUndoPreview(world, selected)
    :let l:entry = a:selected[0]
    " 選択された文字を表示。
    :echo l:entry
    " 文字を表示できるように、ちょっと待ってもらう。
    :5sleep
    :return a:world
:endfunction

" リストから<c-u>で選択されたときに呼び出される。
" 説明は省略
:function! s:AgentUndoAndClose(world, selected)
    :return a:world
:endfunction

" tlibのリストでどれが選択されたかを特定するための文字を返す
:function! s:SNR()
    :return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSNR$')
:endfunction
posted by 小見 拓 at 01:17| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2007年02月17日

「なんだか原因が良くわからないがとにかくエラーが出て動かない」、を解決する方法 (vimエディタ)

vimエディタを使っていて、

・ある機能、設定を使用したらエラーが出た
・もしくは、あるプラグインを入れたらエラーが出た
・原因はわからない
・心当たりは無い
・検索エンジンを使用しても解決策がみつからない
・どうしよう

という場合でも、エラーのコードが表示されているなら、
解決策が見つかる可能性があります。






例。



diff_error.jpg
:VDsplitコマンドが失敗した。
詳しい原因は表示されていない。だから、当然原因はわからない。



diff_error_spot.jpg

E97

でも、謎のコードは表示されている。



このコードをvimエディタのヘルプで検索してみます。

:help E97



英語が読める人にとっては、
原因と、解決方法が一目瞭然のヘルプがヒットしました。
help_view.jpg

                                                *E97*
Vim will do a test if the diff output looks alright. If it doesn't, you will
get an error message. Possible causes:
- The "diff" program cannot be executed.
- The "diff" program doesn't produce normal "ed" style diffs (see above).
- The 'shell' and associated options are not set correctly. Try if filtering
works with a command like ":!sort".
- You are using 'diffexpr' and it doesn't work.
If it's not clear what the problem is set the 'verbose' option to one or more
to see more messages.

The self-installing Vim includes a diff program. If you don't have it you
might want to download a diff.exe. For example from
http://jlb.twu.net/code/unixkit.php.

今回の問題はdiffコマンドがうまく実行できなかったため起きたようです。
解決するには、diffコマンドをダウンロードしてインストールしろ、とヘルプに言われました。



diff_success.jpg
diffコマンドをインストールすると、
:VDsplitコマンドは、ばっちり成功。



ということがあるので、エラーのコードが表示された場合は、
駄目で元々の気分で
:help エラーのコード

を実行してみると良いです。
vimエディタがエラーの原因を教えてくれるかも?

(最初から原因が分かるようなメッセージを出せ、という意見はもちろんあるでしょう。)



今日は以上です。
では。

posted by 小見 拓 at 03:28| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2007年02月16日

mac osx gvim version 7 tab (drawer)

mac osx vimバージョン7のタブ。
vimdrawer-resizable.png

確かに、これはかっこわるいような気がしないでもないものね。
osx_old_vim_tab.png


詳しくは
http://panos.solhost.org/macvim/VimPatches/GuiTab




さて、近況ですが、忙しくて何もできませんよっと。
セキュリティのなんたらで、ノートパソコン持ち運べないので、
電車の中でも作業できませんわ。

posted by 小見 拓 at 01:58| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2006年04月25日

Open Filenames containing Spaces with gf (vimエディタ)

vimエディタでは、
ファイル名の上にカーソルを持っていって、
gf

と入力すると、そのファイルを開くことができるんだけど、
gf_open.jpg
カーソルをファイル名の上に置いて"gf"と入力すると、
カーソル下に書いてあるファイル名のファイルを開ける。



ファイル名に空白文字(スペースとか)が入っていると、
その空白文字でファイル名が区切られてしまうので、
通常、この機能では、スペース入りのファイルを開けないのです。
gf_open_error.jpg
開こうとしているファイルは"with space text.txt"だが、
"with"というファイルを開こうとしてエラーになる。



visualモードでファイル名を選択してからなら、
スペース入りファイル名でも、gfコマンドでファイルを開くことはできる。

gf_select_filename.jpg




このファイル名スペース入りのファイルをgfコマンドで開けるようにする方法。
Tip #1212: Open Filenames containing Spaces with gf
http://www.vim.org/tips/tip.php?tip_id=1212


下の設定を行うと、スペースを有効な文字列として認識するので、
スペース入りでも開けるようになるらしい。
:set isfname+=32

gf_set_isfname.jpg
設定を行う。



gf_open_with_space_file.jpg
":set isfname+=32"と設定した後は、
スペースがファイル名に入っていても、gfコマンドで開けるようになった。




o・∀・)つ〃ホェーホェー




本日は以上です。
では〜。




名無しのVIM使いは移転しました。
http://members.jcom.home.ne.jp/advweb/ => http://nanasi.jp/

posted by 小見 拓 at 03:06| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2006年04月19日

vimエディタ ヘルプのgrep

vimエディタのヘルプもgrepにかけることができます。
:helpgrep search_keyword

このヘルプのgrep機能が使えるのは、
ヘルプのどこに該当のドキュメントが記述してあったか忘れた場合とか、
ヘルプのキーワードとなる語がわからないような場合ですね。


このhelpgrepコマンドを使うと、
vimエディタのhelpコマンドで適当にキーワード入力して探すより、
目的のドキュメントに早く辿り着ける場合があります。


helpgrep_many_match.jpg
"helpgrep"コマンドの検索では、
検索がヒットしすぎてしまうこともある。
上は":helpgrep"コマンドで"register"を検索したら、
沢山見つかりすぎてしまったの図。



使い方は、探したい語、パターンを引数に
":helpgrep"コマンドを実行すればOKです。

:helpgrep search_keyword



":helpgrep"コマンドでのgrep検索実行後は、
vimエディタの":grep"コマンドで検索した後の操作と一緒で、
:copen
で、grep結果の一覧を表示、
:cclose
で、一覧を閉じることができます。


helpgrep_select.jpg

grep結果一覧からファイルを選択すると、
そのドキュメントをvimエディタで開ける。





本日は以上です。
ではでは。




名無しのVIM使いは移転しました。
http://members.jcom.home.ne.jp/advweb/ => http://nanasi.jp/
posted by 小見 拓 at 02:57| Comment(1) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2006年04月06日

指定したカラム位置にテキストを流し込む その2 (vimエディタ)

3週間もかけてリニューアル作業してたのに、単に見づらくなっただけで終わったので、
3週間分の成果を破棄しました。本気で泣けた(´・ω・`)



今日は、前回の記事でコメントで教えてもらった方法の紹介。
vimエディタで、指定したカラム位置にテキストを流し込む その2


vimエディタのヘルプだと、下の場所になります。

:help visual.txt | /Visual-block Insert

Visual-block Insert
With a blockwise selection, I{string}<ESC> will
insert {string} at the start
of block on every line of the block.

vimエディタで矩形選択して、「I」を入力して入力モードに移った後、
文字列{string}を入力、
その後、<ESC>を押すと、矩形選択した全ての行のブロックの先頭に、
先ほど入力した文字列{string}が入力されます。



Visual-block Append
With a blockwise selection, A{string}<ESC> will
append {string} to the end of
block on every line of the block.

vimエディタで矩形選択して、「A」を入力して入力モードに移った後、
文字列{string}を入力、
その後、<ESC>を押すと、矩形選択した全ての行のブロックの最後に、
先ほど入力した文字列{string}が入力されます。



ほぅほぅ、なるほど。
よく知りませんでしたが、便利な機能があるんですね。
また、少し賢くなりましたよ。


つまり、前回書いた記事の場合は、
こうやれば良かったらしい。




例えば、下のようなSQL文があるとして、
insert into card_info values ('NW0001', 'ALFKI');
insert into card_info values ('NW0002', 'ALFKI');
insert into card_info values ('NW0003', 'ALFKI');
insert into card_info values ('NW0004', 'ALFKI');

このSQL Insert文を、下のように修正する場合の話。
insert into card_info (card_id, customer_id) values ('NW0001', 'ALFKI');
insert into card_info (card_id, customer_id) values ('NW0002', 'ALFKI');
insert into card_info (card_id, customer_id) values ('NW0003', 'ALFKI');
insert into card_info (card_id, customer_id) values ('NW0004', 'ALFKI');




文字を入れる場所を矩形選択して、
insert into card_info values ('NW0001', 'ALFKI');
insert into card_info values ('NW0002', 'ALFKI');
insert into card_info values ('NW0003', 'ALFKI');
insert into card_info values ('NW0004', 'ALFKI');


「I」を入力して、入力モードにする。
vim_block_insert_chmode.jpg


入力モードになったら、その行にテキスト「(card_id, customer_id) 」を入力。
insert into card_info (card_id, customer_id) values ('NW0001', 'ALFKI');
insert into card_info values ('NW0002', 'ALFKI');
insert into card_info values ('NW0003', 'ALFKI');
insert into card_info values ('NW0004', 'ALFKI');



ESCキーを押すか、Ctrl押しながら[を押すと、
選択していた他の行のブロックの先頭に
今、入力した文字列が入力される。

insert into card_info (card_id, customer_id) values ('NW0001', 'ALFKI');
insert into card_info (card_id, customer_id) values ('NW0002', 'ALFKI');
insert into card_info (card_id, customer_id) values ('NW0003', 'ALFKI');
insert into card_info (card_id, customer_id) values ('NW0004', 'ALFKI');

vim_block_insert_complete.jpg


わぉ!! これは、すばらしいね。(`・ω・´)







本日は以上です。
ではー。



名無しのVIM使いは移転しました。
http://members.jcom.home.ne.jp/advweb/ => http://nanasi.jp/

posted by 小見 拓 at 00:15| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2006年03月18日

指定したカラム位置にテキストを流し込む (vimエディタ)

例えば、下のようなSQL文があるとして、
insert into card_info values ('NW0001', 'ALFKI');
insert into card_info values ('NW0002', 'ALFKI');
insert into card_info values ('NW0003', 'ALFKI');
insert into card_info values ('NW0004', 'ALFKI');

このSQL Insert文を、下のように修正する場合の話。
insert into card_info (card_id, customer_id) values ('NW0001', 'ALFKI');
insert into card_info (card_id, customer_id) values ('NW0002', 'ALFKI');
insert into card_info (card_id, customer_id) values ('NW0003', 'ALFKI');
insert into card_info (card_id, customer_id) values ('NW0004', 'ALFKI');



このように修正する場合、
"card_info"と"values"の間、左から23列目の位置に
"(card_id, customer_id) "という
テキストを入れる必要がありますよね。


こういうテキスト変換処理は「%c」を使うと楽なんです。



置換処理で「%c」を使うと、あるカラムを指定することができるので、
まず、変換する範囲を指定して、
vim_per_c_select.jpg

:'<,'>s/\%23c
次に「%c」でテキストを差し込むカラム位置を指定、
(%は\でエスケープする。)
vim_per_c_pre.jpg

:'<,'>s/\%23c/(card_id, customer_id) /
差し込むテキストを入力して実行。
vim_per_c_post.jpg

これで、23列目の位置にテキストを流し込むことができます。
(指定したカラムにあった文字は置き換わらないで、
入れたテキストの長さの文だけ、右側にずれます。)
vim_per_c_replaced.jpg



この置換を使う場合、カラム位置が即座には分からないでしょうから
カーソルのある場所のカラム番号をステータスラインに表示しておくと、
便利だと思います。
vim_per_c_statusline.jpg




本日は以上です。
ではー。



名無しのVIM使いは移転しました。
http://members.jcom.home.ne.jp/advweb/ => http://nanasi.jp/

posted by 小見 拓 at 00:33| Comment(4) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2006年03月08日

:e <C-x> (編集中のファイルと同じディレクトリにあるファイルを開く。)

今日はvimエディタの基礎テクニックについての話題です。



エディタで編集する対象のファイルは、
いくつかの数少ないディレクトリに
まとまって置いてあることが多いと思います。


なので、
既にエディタで開いているある特定のファイルと、
同じディレクトリにあるファイルを開きたい、
ということは、よくあることです。


しかし、カレントディレクトリが
その開きたいファイルと同じディレクトリでない場合、
そのディレクトリまでのPATHの入力が必要になるので、
入力が少々面倒ですね。


そういう時には、
今回説明するCtrl-x (Ctrlキーを押しながらx)
編集ファイルの親ディレクトリまでのPATHを補完してしまえば、
ファイル名の入力だけでファイルを開けるようになるので、
随分と楽になります。



Ctrl-xの使い方の例としては、

まず、ファイルを開くために、「:e」を入力。

:e

vim_ctrl_x_e.jpg

次に、半角スペースを1つ空けて、Ctrl-x を入力します。
(Ctrlキーを押しながらxキーを押す。)
Ctrl-x


すると、
編集中のファイルの親ディレクトリまでの
PATHが入力されるので、
vim_ctrl_x_ctrl_x.jpg
カレントディレクトリは$HOMEで、
編集中のファイルは"/usr/local/include/readline/rltypedefs.h"です。


あとは、ファイル名を入力するだけで
編集ファイルと同じディレクトリにあるファイルを
開くことができます。
vim_ctrl_x_input_filename.jpg


このCtrl-xは、他の状況でもなかなかに役に立ちますので、
覚えておくと良いと思いますよ。

このCtrl-xの機能はKaoriya版の機能です。





ちなみに、ファイル名の入力だけで、
編集ファイルと同じディレクトリのファイルを開く方法としては、
他に下のような方法を考え付きました。


[方法1]
CD.vimスクリプトを使う。
このスクリプトをインストールしておくと、
ファイルを開いた時、バッファを切替えた時に、
カレントディレクトリを、編集ファイルと同じディレクトリに変更します。
カレントディレクトリにあるファイルであれば、
ファイル名の入力だけで対象のファイルを開けます。


[方法2]
:CdCurrentコマンドを使う。
このコマンドを使用すると、カレントディレクトリを、
編集中のファイルと同じディレクトリに変更できます。
カレントディレクトリにあるファイルであれば、
ファイル名の入力だけで対象のファイルを開けます。

:CdCurrentコマンドはKaoriya版の機能です。





本日は以上です。
ではでは〜。

posted by 小見 拓 at 01:10| Comment(0) | TrackBack(1) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2006年02月23日

Vimを使ってくれてありがとう

主にUnix系の環境で発生。
(試したらWindowsのcygwinのシェルでもできた。)


コンソールのvimエディタを起動した後、
エディタを終了させると、
コンソールのウィンドウのタイトルが
「Thanks for flying Vim」になってしまうことがある。
thanks_for_flying_vim.jpg


「Thanks for flying Vim」は、エディタ終了時、
元々ウィンドウのタイトルに表示していた文字を復元できなかったら、
その代わりに表示するらしい。


(エディタの起動前に)vimエディタの設定ファイル$HOME/.vimrcに

:set notitle
と設定しておくと、
ウィンドウのタイトルが「Thanks for flying Vim」になるのを
防ぐことができます。


ただし、「:set notitle」設定にすると、
「:set title」設定の場合にウィンドウのタイトルに表示していた
編集ファイル情報などは表示できなくなります。
thanks_for_flying_vim_title.jpg
:set title 設定の時

thanks_for_flying_vim_notitle.jpg
:set notitle 設定の時





本日は以上です。
では〜。


今回はたったこれだけの内容なのに、いろいろトラブルが発生して、
確認に結構手間取りました(´ヘ`;)


今回の記事のタイトルは、
Mac OSX の Carbon GUI版 vim についてた「Thanks for flying Vim」の日本語訳からもってきました。
thanks_for_flying_vim.jpg



名無しのVIM使いは移転しました。
http://members.jcom.home.ne.jp/advweb/ => http://nanasi.jp/
posted by 小見 拓 at 03:37| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2006年02月19日

Keep cursor's column position after buffer switch

vimエディタでファイルを開いた時、あるいはバッファを切替えた時に、
最後にカーソルがあった場所にカーソルを移動する。

[方法1]
vimエディタに添付してある設定ファイルサンプルvimrc_example.vimファイルに
この機能を実現する定義が用意されているので、
その定義をユーザーの設定ファイル(.vimrcか、_vimrc)に追加するか、
augroup vimrcEx
au BufRead * if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" | endif
augroup END

上の設定を追加する。

[方法2]
あるいは、もっと簡単に、ユーザーの設定ファイルに下の設定を追加して、
設定ファイルサンプルvimrc_example.vimファイルを読み込むようにする。
:source $VIMRUNTIME/vimrc_example.vim

ただし、後者の方法(方法2)は、vimrc_example.vimの他の設定も追加されてしまう。


香り屋から入手したvimエディタの場合は、
この機能は最初から使えるようになっています。

それは、香り屋vimエディタvimエディタに添付の設定ファイルで
vimrc_example.vimを読み込むようにしてあるからなのです。

つまり、香り屋vimを使用している人は、上の設定を行う必要がない。

でも、それ以外のvimを使用している人は、
(例えば、Mac OSX のコンソールvimなど)
上の設定のどちらかをvimエディタの設定ファイルに書いておくと、
より便利にvimエディタを使用できるようになるでしょう。



本日は以上です。
では〜。




名無しのVIM使いは移転しました。
http://members.jcom.home.ne.jp/advweb/ => http://nanasi.jp/
posted by 小見 拓 at 04:30| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2006年02月10日

「|」によるコマンドの連続実行 (vimエディタ話)

vimエディタでは、exモードでコマンドを入力する時に、
「|」で区切って、複数のコマンドを入力すると、
連続してそれらのコマンドを(一度に)実行できます。


例を挙げると、以下のようなことができます。
" 例.ファイルを保存して終了。「:wq」と同じ。
:w | :q
" 例.置換を実行してから保存。
:%s/pre/post/g | :w


通常は一度に実行しなくても、
連続でコマンド入力すればそれで問題ないでしょうから、
この「|」は、使い道がちょっと思いつきづらいかもしれません。


私は、
:set nohidden設定(:set hiddenと設定していない)の時に、
vimエディタで開いている全バッファに対して、確認つき置換を実行する時に、
使ったりしています。

:bufdo :%s/previous/replaced/gc | :w 
:bufdoは、vimエディタで開いている全バッファに対して、
続くコマンドを実行します。

:set nohidden設定の時にバッファの編集を保存せずに、
他のファイルの編集に移ろうとすると、
「最後の変更が保存されていません」とエラーがでるのですが、
vim_not_save_error.jpg
この場合は、最後に「| :w」を付けて、置換直後にバッファの保存をしているので、
エラーがでないわけですね。


vimエディタの設定を
:set hiddenにしているなら、

:bufdo :%s/previous/replaced/gc
:wa
で良いのですけど。
(愛用しているvimエディタプラグインが:set nohiddenでないと使えないのです。)



本日は以上です。
ではー。




名無しのVIM使いは移転しました。
http://members.jcom.home.ne.jp/advweb/ => http://nanasi.jp/
posted by 小見 拓 at 00:05| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2006年01月22日

viエディタによる追加書き込み

不遇なコマンド。

基本的な操作のひとつだったはずなのにー、
「viエディタの使い方」とかの解説で、たまに忘れられてる。

ファイルへの追加書き込み。
:w >> file_path


まあ、確かに知らなくても(そんなに)困りませんからね。



今回は以上です。

本日は本家サイトも更新する予定です。

posted by 小見 拓 at 17:54| Comment(0) | TrackBack(0) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2006年01月04日

ファイル保存ダイアログの初期ディレクトリについての話 (vimエディタ話)

Windows版のgvimのファイル保存ダイアログの初期ディレクトリは、
vimエディタの設定ファイル_vimrcで「browsedir」を指定すれば、変更、もしくは指定することが可能です。
win_gvim_save_dialog.jpg
ファイル保存ダイアログとは、
メニューの「名前を付けて保存(A)」を選択した時に表示される、このダイアログのこと。



例えば、vimエディタの設定ファイル_vimrcに、
 :set browsedir=buffer 
と設定すれば、編集中のファイルのあるディレクトリが
ファイル保存ダイアログの初期ディレクトリになり、
 :set browsedir=current 
と設定すれば、カレントディレクトリが
ファイル保存ダイアログの初期ディレクトリになります。


他には、
初期ディレクトリまでのPATHを直接指定したり、
最後に保存したディレクトリを指定したりできます。
:set browsedir=/path/to/default/directory
:set browsedir=last



詳しくはvimエディタを立ち上げて、
「:help browsedir」を入力して表示される、ヘルプを見てください。



vimエディタの場合、コマンドでファイルを保存することの方が多いでしょうが、
Windowsのデスクトップなどにファイルを保存する時などには
そこまでのPATHの入力が面倒なので、この設定は役に立つことがあります。


この機能は、Windows版のgvimでのみ有効です。



本日は以上です。
ではではー。
posted by 小見 拓 at 04:00| Comment(0) | TrackBack(1) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2005年12月25日

検索でマッチした対象に対して、置換を行う。(vimエディタ話)

まず検索して、一致する対象を確かめてから、その対象に対して置換を実行する。


最後に検索に使用した検索ワードは、
 <C-r> / 
と入力すると呼び出せるので、これを使う。
(<C-r>はCtrlキーを押しながらrキーを入力。)
関連
vimエディタの「レジスタ」第4話
http://advweb.seesaa.net/article/517151.html
検索に使用した文字は「/」のレジスタに入る。




手順としては、
まず、検索して、置換する場所を確認したら、
vim_check_match_target.jpg




次に、範囲と置換を指定して、

 :%s/ 
vim_input_substitute_command.jpg




さきほど使用した検索ワードが「<C-r> /」で入力できるから、
これを利用して、検索ワードを入力。
 <C-r> / 
vim_input_search_target.jpg




最後に、置換後の文字を入力して、置換を実行。
vim_execute_substitute_with_ctrl_r_slash.jpg




「/」「?」を使うと、
インクリメンタルサーチで細かな正規表現の結果を確認しながら、検索語を作れるので、
私はよく表題のようなことをするのですけど、他のvimエディタ使いはどうなのでしょうね?


本日は以上です。
ではー。
posted by 小見 拓 at 23:30| Comment(0) | TrackBack(1) | 基本 (vimエディタ) | このブログの読者になる | 更新情報をチェックする
記事検索
 
カテゴリ
最近のコメント
QKCのインストール [3-4/18]
 ⇒ kova (05/23)
calendar.vimには日記をつける機能があったらしい。
 ⇒ とまと (03/07)
最近よく見るようになったvimスクリプトのコメントの書き方
 ⇒ 小見 拓 (02/13)
 ⇒ kana (02/11)
vimエディタ ヘルプのgrep
 ⇒ みかん (07/15)
指定したカラム位置にテキストを流し込む (vimエディタ)
 ⇒ こみ (03/20)
 ⇒ とおりすがり (03/19)
 ⇒ こみ (03/18)
 ⇒ takayama (03/18)
tempfile -- Generate temporary files (Mac OSX)
 ⇒ take3 (01/20)
 ⇒ こみ (01/19)
 ⇒ take3 (01/18)
 ⇒ こみ (01/17)
 ⇒ take3 (01/14)
WebObjectsのオープンソースプロジェクト Project Wonderってなんじゃろな。#2
 ⇒ (06/30)
 ⇒ Tetsuya Kuramochi (06/29)
 ⇒ Tetsuya Kuramochi (06/29)
WebObjectsのオープンソースプロジェクト Project Wonderってなんじゃろな。#1
 ⇒ (06/03)
 ⇒ Tetsuya Kuramochi (06/02)
最近のトラックバック
vimエディタで「文字コード、改行コードを変更して保存する。」
 ⇒ window.closed (04/25)
 ⇒ himesuke’s STEP-log (03/18)
 ⇒ PukiWiki/TrackBack 0.2 (05/07)
vimエディタの折りたたみ機能の話。その2 (foldmethod=syntax)
 ⇒ 俺の基地 (PukiWiki/TrackBack 0.3) (04/20)
ログファイルを監視して、特定のキーワードが見つかったら、何らかのコマンドを実行する。
 ⇒ Apple Fan (10/16)
ファイル保存ダイアログの初期ディレクトリについての話 (vimエディタ話)
 ⇒ ナレッジエース (07/23)
:e <C-x> (編集中のファイルと同じディレクトリにあるファイルを開く。)
 ⇒ ボクノス (02/07)
Opening many files using wildcards.
 ⇒ PukiWiki Plus! (PukiWiki/TrackBack 0.4) (10/28)
 ⇒ 川o・-・)<2nd life (07/18)
vimエディタで印刷自由自在 その8 -エディタからの直接の印刷の代わりに、2html.vimスクリプトを使用する-
 ⇒ Knoppix Temporary Directory (PukiWiki/TrackBack 0.3) (02/19)
検索でマッチした対象に対して、置換を行う。(vimエディタ話)
 ⇒ 123net :: 開発日記 (12/31)
ごみ箱にファイルを叩き込むスクリプト。(vimエディタ)
 ⇒ "OSX" .app's :Macのアプリを便利、感動、面白をベースにほぼ日刊で紹介。 (11/26)
パーセント、%、percent でのカーソル移動 (vimエディタ話)
 ⇒ プログラミング言語 (10/11)
過去ログ
Profile
小見 拓
mail@nanasi.jp
小見と申します。
神奈川でデベロッパーやってます。
名無しのVIM使い

RSS 1.0


広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は90日以上新しい記事の投稿がないブログに表示されております。