(便利で)くだらない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」が挙げられています。
もっとも小さくてもっとも汎用性の高いコマンドは (スコア:2, すばらしい洞察)
# T/O 制限に引っかかっちゃったよ。
Re: (スコア:0)
よく指がもつれるので世話になります。
移動コマンド+d,y,p は当たり前だけど
xpって以外に知られてないかな? と
参考に (スコア:2, 参考になる)
100 Vim commands every programmer should know [catswhocode.com]
# 20個も使いこなせていないけどID
# あ、和訳 [jkl.lomo.jp]があった。
Re:参考に (スコア:1)
和訳の方でこんなコト書かれてますが、マッチさせるパターンとしての \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 じゃないのか、とか。
Vim自体が(ry (スコア:1)
私は、根っからのVim派
map g 1G
が、特にお気に入りです。gで先頭に、Gで末尾に移動できて便利です。
Re:Vim自体が(ry (スコア:1, 参考になる)
> が、特にお気に入りです。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 もあった
Re:Vim自体が(ry (スコア:1)
vimdiff超重要。もちろん:diffsplitでもよいですが。
名物に旨いものなし!
Re: (スコア:0)
クロスプラットフォームでどんなキーボードでも動く利点は認めるが,今時常用するツールのたぐいではなかろう
WordMasterやWordStarから何十年遅れてるんだよ!?
Re:Vim自体が(ry (スコア:2, 参考になる)
確かに元々の vi の古さは認めますが、vim は現代的で高機能なツールですよ。
各種言語のシンタックスにも対応してるし、縦横のウィンドウ分割や、gui/mouse も使えるし、ほぼ無制限の undo/redo などなど、テキストエディタとしての機能は高度なレベルで完成されてます。むしろ高機能化しすぎて肥大化が心配される程です。 汎用のテキストエディタで、自信を持って vim 以上と言える物は数少ないんじゃないでしょうか。 WordMaster/WordStar は私も遙か昔に使ってましたけど、さすがに比較にもなりませんよ。
モーダルなのは好みが分かれるかもしれませんが、"閲覧"と"編集"を明確に区別するという点で今でも意味を失ってませんし。
計算サーバ上の数十M byte の巨大なデータファイルを ssh 端末からサクサク編集できるので、私にとっては手放せないツールの一つです。
Re:Vim自体が(ry (スコア:2, 参考になる)
VIM はエスケープシーケンスで IntelliSense もどき (例えば CSS 編集モードではコンテキストに合わせて利用可能なプロパティ名や指定可能な値の一覧を候補として表示) まで実装してしまってるハイレベルなエディタです。
現行エディタの中では最強クラスの部類に入るものですよ。
プレーンな vi や nvi 等に対して言うならともかく、現行の VIM 7.x に対して言うのは的外れすぎです。
Re:Vim自体が(ry (スコア:1)
エディタに何を求めるかによって違ってくるのでしょうが。
Re:Vim自体が(ry (スコア:1)
Windows用のソフトのソースをいじる時もcygwinのvimで編集して、
VisualStudioでコンパイル/デバッグを行うなんて事をしています。
IntelliSenseとかあるので本当はVisualStudioに慣れた方がいいんでしょうが…
例えば、今さっき必要になった作業なのですが、
というような調子で数百行あるファイルで、set policy id 数字 from ...という行のみを対象(他の行はいじらない)にして
行末に連続するスペースがあったら一つにまとめ、スペースが無かったら一つ追加するというのを簡単に出来るのでしょうか?
viならば、 でいいのですが、これより簡単に出来るエディタはそんなに多く無いのではないかと思います。
Re:Vim自体が(ry (スコア:1)
行頭という指定も入れ忘れたし。
正しくは、 です。
Re: (スコア:0)
両方ともまだあるんですか?
カーソルの割り付けが嫌だった>WordStar
常用するのに十分な機能はある (スコア:0)
高機能なエディタしか使えないと,システム管理者とかは困ったことになるよ。
Re:常用するのに十分な機能はある (スコア:1)
という訳で、システム管理者は真のUnix標準エディタであるedを使えるようになりましょう…とまでは言いませんが(^^;
# でも、vi(というかexコマンド)を使いこなせれば、edだって何とかなりますよ
Re: (スコア:0)
勉強して出直してこい。
でも主に使ってるのViEmu (スコア:1)
羞恥プレイ (スコア:1, おもしろおかしい)
/Insert
x
許可がありません
('A`)
#:Sexコマンドを使ったのは本当。
#特にリアクションはありませんでしたが。
#Sexコマンドは結構良く使います。
#デスマ中なのでAC
Re:羞恥プレイ (スコア:5, 興味深い)
「そこで『:Sex』してアソコ(※1)を開いてくれませんか?」
「『:Sex』してソコは開いたまま、下の方イジれるように移動(※2)できますか?」
こんな会話をしていたのでしょうか?楽しそうですねぇ...
※1 : 「アソコ」→ ディレクトリを指すのですよ!
※2 : 「下の方をイジれるように移動」→ Ctrl-w ですよ!
ファイラー (スコア:1)
vim .
とか
:E
とかでファイラーとして使うときかなぁ。
ページャとしての利用 (スコア:1)
$ diff -ruN dirA dirB | vim -R -
ってのは重宝しています。
Re: (スコア:0)
あ、ディレクトリ比較はできないっすね。
Re:ページャとしての利用 (スコア:1)
ソースツリーの変更点を概観するには diff -ruN は便利ですよ。
飛び道具 (スコア:1)
しかし、世界征服への偉大なる第一歩。
- HAVE YOU FORGOTTEN SOMETHING? -
賛否両論 (スコア:1)
有ったら良いかなが、実装されて、邪魔に成り下がって(賛否両論)。
カ~ソルキ~
以上、駄文でした。
閑話休題
Matrix (スコア:1)
:help uganda (スコア:1)
Taglist (スコア:1)
(くだらなくて)便利なEmacs技 (スコア:0)
Emacsのとこだけ「(便利で)くだらない」ではありません。 何故そうなっているのは分かりませんが。
Esc (スコア:0)
PC触りたての頃はemacsのコントロールキー技が好きだった。
勝手にアンケート (スコア:2, 興味深い)
というわけで、あなたはどっち派か教えてください。
#ちなみに私は全角半角キーとEscキーを入れ替えた上でEscキーを使っています。
Re:勝手にアンケート (スコア:2, 参考になる)
あまり知られていないようですがそれなりに汎用的に使えて、自分の知っている範囲では
- VT200/300シリーズ
- xterm等のX用端末エミュレータ(これはX自身のキーバインドっぽい)
- cygwin版gvim(これもX?)
- PuTTY
で使えます。Tera TermやPoderosaでは標準では使えませんので、インストールしたら
真っ先にキーバインドをいじって使えるようにしています。
Tera Termにはそのうち(こっそりと)標準のキーバインドとして入れるかも。
Re:勝手にアンケート (スコア:1)
ESCがXの下にあることになれてきたので、最近はESCかなぁ。
# リマップ
Re: (スコア:0)
M-x とかも ^[x で打ってます。
Altつかったほうが簡単な気がするけど、なんかなれちゃった
Re: (スコア:0)
> というわけで、あなたはどっち派か教えてください。
Emacsはメタキー派です。
Re: (スコア:0)
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の同時押しに当てるということもできます。
Re: (スコア:0)
Vimって何 (スコア:0)
Re:Vimって何 (スコア:5, おもしろおかしい)
証明:
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つもついている。
ネタにマジレス (スコア:0)
残念ながら、vim は正しいローマ数字ではありません。
ちなみに、994 はローマ数字では cmxciv になります。
Re:ネタにマジレス (スコア:2, 参考になる)
# 入門vi 第6版 (単行本) [amazon.co.jp] に掲載されているネタです。
# 野暮だね。僕も。
:SM (スコア:0)
素のママのvim (スコア:0)
Re: (スコア:0)
さっき編集していた場所に戻りたいとき (スコア:0)
2. 同じファイルの別の場所をちょっと参照する。
3. で、さっき編集していた場所に戻りたい。
というときに、
u (アンドゥ)
Ctrl-r (リドゥ)
するのは私だけ?
Re:さっき編集していた場所に戻りたいとき (スコア:1)
ただ普段使っているのがnviなので、実行するのはuを2回ですが。
で、たまにcygwinとかでvimを使っている時にも同じ事をやってあせったり(^^;
# 自分のPCでは.vimrcにset compatibleを入れてあるので大丈夫ですが
あと、set compatibleしても微妙に動作が違ったりするんですよね。
その辺りで結構引っかかったりしています。
Re: (スコア:0)
:help `.
まあu<C-r>もアリですけどね。