Vim Part25 ..
[2ch|▼Menu]
202:名無しさん@お腹いっぱい。
15/05/16 23:18:17.45 .net
>>196-198
解説ありがとうございます。
この領域の内容は難しすぎて僕にはついけいけないようです。

203:名無しさん@お腹いっぱい。
15/05/17 02:56:03.15 .net
うそーん。絶対あなたのほうが詳しいと思う。
packageを作った人によって多少の名前の違いはあるかもしれないけどそこは勘で分ると思います。
例えばvimのversionが7.3だっとして/usrにinstallされていたら
/usr/share/vim73/ftplugin というdirectoryの中に「php.vim」と「html.vim」というfileが
あるからそれを$HOME/.vim/ftplugin というdirectoryを作ってその中に複製して入れる。
その複製したphp.vim fileの中に
setlocal commentstring=/*%s*/
という場所が下の方にあるから、その上と下に分を付け足して最終的に以下のようにします。
if ! did_filetype ()
setlocal commentstring=/*%s*/
endif
その複製したhtml.vim fileの中に
setlocal commentstring=<!--%s-->
という場所が上の方にあるから、その上と下に分を付け足して最終的に以下のようにします。
if ! did_filetype ()
setlocal commentstring=<!--%s-->
endif
一応これで以下の設定で動いています。何となくsetlocalにしときました。
autocmd FileType php setlocal commentstring=#\ %s
filetype plugin indent on

204:名無しさん@お腹いっぱい。
15/05/17 03:26:03.08 .net
ごめんそっかそっか、上の方法だと他にも何か設定してる時に悪影響あったりしそうな感じもする。
一番簡単なのはphp.vimのfileのsetlocalの値を書換えるだけなのだけれども。
その時はそうするか、偉い人のアドバイスを待って。寝ます。

205:名無しさん@お腹いっぱい。
15/05/21 12:17:43.59 .net
既に開いたファイルと差分を取る方法を教えてください

206:名無しさん@お腹いっぱい。
15/05/21 13:17:21.46 .net
>>202
:h :diffsplit

207:名無しさん@お腹いっぱい。
15/05/21 13:45:12.45 .net
vi並の低機能サクサクvimをビルドしようとするとどれくらい近くなるの?
やったことあるひといる?

208:名無しさん@お腹いっぱい。
15/05/21 14:49:02.84 .net
>>204
その行為に意味があると思えない
viが使いたければviを入れれば済むし

209:名無しさん@お腹いっぱい。
15/05/21 15:42:52.83 .net
あるソフトからvim呼び出すときスワップ作りたくないんでgvim --noswapfile -"%f"って書いたんだけど"未知のオプション引数です"と言われます
とりあえず開いてから:set noswapfileってすれば効くみたいなんだけど……なんででしょ
>>204
vim-tinyでもあかんのかね?

210:名無しさん@お腹いっぱい。
15/05/21 15:49:37.08 .net
マッピングされているキー一覧を取得する方法ありませんか?

211:名無しさん@お腹いっぱい。
15/05/21 18:02:18.06 .net
>>206
:h -vim
:h -c
gvim +"set noswapfile" 〜

212:名無しさん@お腹いっぱい。
15/05/21 18:20:21.24 .net
>>207
普通に :map とか?
:h :map_l
してジャンプした先の上15行を読んでみて

213:名無しさん@お腹いっぱい。
15/05/21 21:29:26.69 .net
久し振りにWin系のエディタ触ったら操作完璧に忘れてた
一文字後ろ削除ってなんだっけ?とx押したら行切り取りされて更にビビった

214:名無しさん@お腹いっぱい。
15/05/22 09:31:56.85 .net
autocmd FileType
\ a,b,c,d,e,f,g,h,i,vim,python,ruby,cpp,html
1文字と特定のファイルタイプだけ色がつくんですがなぜですか?
cppとかhtmlは色はついてません

215:名無しさん@お腹いっぱい。
15/05/22 10:28:31.38 .net
4行のvimrc
filetype plugin indent on
set list
colorscheme blue
autocmd FileType javascript setlocal nolist
javascriptのファイルを開いてタブ文字を入れて
:sources ~/.vimrc
こうするとautocmdのnolistが効いてないんですがどうしてですか?

216:名無しさん@お腹いっぱい。
15/05/22 11:06:58.93 .net
>>212
autocmd FileType はバッファに読み込んだファイルの filetype が設定された時に実行されるコマンドだからじゃない?
:source ~/.vimrc を読み込んでも、元々バッファに読み込んであった javascript ファイルはそのままだから、filetype を再設定しないんじゃないかな。

217:名無しさん@お腹いっぱい。
15/05/22 23:55:02.32 .net
URLリンク(vim-jp.org)
vim歴浅いからよくわからないんですけど
|SourcePre| Vimスクリプトを読み込む前
|SourceCmd| Vimスクリプトを読み込む前 |Cmd-event|
これってどっちも同じ機能ってことですか?それともtypoですか?

218:名無しさん@お腹いっぱい。
15/05/23 06:22:27.58 .net
>>211
それを一行にまとめて書く(バックスラッシュ除く)と、a 以降まったく色がつかない
その部分に色がつくことは本来は無いようだ
だがバックスラッシュで行継続すると
Vimはそれが「"FileType" に続く内容」であると認識できず、別の構文と解釈して色をつけてしまう
具体的にはExコマンドとみなして色付けしている模様
a (appendの略)、b (bufferの略)、c (changeの略)……
また python や ruby もコマンドとして存在する(:h :python 及び :h :ruby 参照)
けど cpp や html という名前のコマンドは存在しないからそれらには色がついていない、という事みたい

219:212
15/05/24 21:0


220:2:29.72 .net



221:名無しさん@お腹いっぱい。
15/05/24 22:31:35.55 .net
>>216
autocmd SourcePre *.js setlocal nolist は source するファイルが vim の設定ファイルじゃないからかな

222:名無しさん@お腹いっぱい。
15/05/25 00:36:38.25 .net
>>216
それをやるなら普通は
au BufRead,BufNewFile *.js setl nolist
とかこんな感じ

223:212
15/05/25 01:30:41.52 .net
>>217
最初に戻ってFileTypeイベントを使って目指できるようにダイアログを表示してみました
autocmd FileType javascript :!zenity --info
これを書くと、ファイル開いた時とsource ~/.vimrcしたとき両方ともダイアログが表示されました
イベントは発火されていました。
ってことはautocmd FileType javascript setlocal nolistでも発火しているはずなんですが、
setlocalが効いてないのがどうしてなのかわかりません。
>>218
:source ~/.vimrcした時にイベントが発火しませんでした

224:212
15/05/25 01:31:39.65 .net
訂正
最初に戻ってFileTypeイベントを使って目指できるようにダイアログを表示してみました

最初に戻ってFileTypeイベントを使って目視できるようにダイアログを表示してみました

225:名無しさん@お腹いっぱい。
15/05/25 02:46:59.27 .net
>>219
こういうことけ?
jsのとき setl nolistしたい
js編集中にso .vimrcした場合setl nolistが解除されないようにしたい
:verb se nolistして最後にオプションが設定された場所みてみた?

226:名無しさん@お腹いっぱい。
15/05/25 14:21:30.52 .net
深入りしないで答えるとjslintとかいうのが悪さをしてそうだ。

227:212
15/05/25 22:36:10.55 .net
>>221
サンプルのためnolistを使っているだけです。
autocmd FileType javascript setlocal {old}を
autocmd FileType javascript setlocal {new}に変更した後にsource ~/.vimrcしても{new}が反映されてないので反映されるようにしたいのです
ファイルを開いた直後は{old}が効いてますが、vimrcを編集して{old}を{new}に書き換えてvimrcを再読込しても{new}が反映されないんです
:verb se nolistしても何も表示されませんでした
>>222
この4行しか書いてないです
filetype plugin indent on
set list
colorscheme blue
autocmd FileType javascript setlocal nolist

228:名無しさん@お腹いっぱい。
15/05/26 00:03:31.01 .net
本当に>>219それ動いたのかな。何処かで勘違いしてないかな。
下記のfileを作って起動して、読みこみ直してもイベントは鎮火されてるよ。
一番下のcomemntを外すとそういう事はできるけれど、
私は>>213が正しいような気がするけれど、しかし私は詳しくないので偉い人頼んだ。
filetype plugin indent on
set list
colorscheme blue
autocmd FileType javascript :r!pwd
"edit

229:名無しさん@お腹いっぱい。
15/05/26 04:40:52.76 .net
以下のfileを作って起動するじゃん。
filetype plugin indent on
autocmd FileType javascript call append ('.', 'test')
そこで以下のどっちらかを打ち込むと打ち込むたびにtestが書き込まれていく。
setlocal filetype=javascript
setfiletype javascript
じゃあ上記のfileにそれをつけたせばと思ってsourceするとどうなるかというと
sourceするたびにtestを書き込む数が増えていってしまう。
その値を初期化できれば完成なんじゃない。

230:名無しさん@お腹いっぱい。
15/05/26 08:37:00.58 .net
>>223
少なくとも普通はこんな感じにする
aug Foo
au!
au FileType javascript setl nolist
aug END
こうしないとvimrc読み込むたびにauが増えていく

231:名無しさん@お腹いっぱい。
15/05/26 12:59:39.80 .net
そっかそういう事かautocmd FileTypeで中身を見たら一目瞭然でした。
横槍ですが、おかげさまでまた一つ知識が増えました。ありがとうございます。
どうやら人気がありそうな以下の二つの言語で試すと、以下のようにするとできるようです。
filetype plugin indent on
autocmd FileType php call append ('.', 'ririnrin')
augroup foo
autocmd!
autocmd FileType javascript call append ('.', 'rurunrun')
setlocal filetype=javascript
"setfiletype javascript
augroup end

232:名無しさん@お腹いっぱい。
15/05/26 13:43:41.39 .net
ごめん上記は嘘。

233:名無しさん@お腹いっぱい。
15/05/26 13:55:06.54 .net
"こうかな。
filetype plugin indent on
autocmd FileType php call append ('.', 'ririnrin')
augroup foo
autocmd!
autocmd FileType javascript call append ('.', 'rurunrun')
augroup end
if &filetype == 'javascript'
setlocal filetype=javascript
endif

234:名無しさん@お腹いっぱい。
15/05/26 14:11:35.21 .net
ごめん上記もまた嘘である。

235:名無しさん@お腹いっぱい。
15/05/26 14:35:33.86 .net
"他のtabに移った時にfiletypeの値が消えちゃうのね。
"これではどうだろ。また何か見落としてるかな。
filetype plugin indent on
autocmd FileType php call append ('.', 'ririnrin')
augroup foo
autocmd!
autocmd FileType javascript call append ('.', 'rurunrun') |let b:filetype_js = 1
augroup end
if exists ('b:filetype_js')
setlocal filetype=javascript
endif

236:隼人新聞社
15/05/26 16:30:44.21 .net
スレによっては国賊で創価員の工作員スパイが暗躍してみんさんを洗脳しようとしています。注意
こんなにある、創価員による破壊的狂気的犯行の数々。実際には新聞TVにのらないだけでもっとある!次はあなたの番だ
●宅間守(在日部落)→大阪 附属池田小学校児童殺傷 。大量殺人犯 創価学会員の犯行 両親も創価学会員
 8人殺害 15人を殺傷。 朝鮮人部落出身。
●斉藤勇太→JR取手駅前バス無差別殺傷通り魔事件(取手バスジャック)  創価学会員の犯行
「通勤、通学客で混雑するバスの中で手加減せず無差別に襲っており、社会に大きな不安や衝撃を与えた結果は重大だ」 
●酒鬼薔薇聖斗→ 東慎一郎(在日)神戸の首切り魔で酒鬼薔薇聖斗 神戸の首切り魔。生首を校門に飾る。2人殺害。創価学会員の犯行 大量殺人犯
●福田孝行(在日)→山口県母子強姦殺害 殺害後屍姦、乳児も殺害 大量殺人犯 創価学会員の犯行。裁判では屍姦は
生き返らせるための(創価流の)儀式だと供述  死刑判決
● 大芦明 →2011年 11月5日 大阪府堺市中区 隣人二名殺害事件。創価学会員の犯行 無期懲役
●八木茂 →埼玉・保険金殺人事件犯人 2名殺害(平成12年)死刑判決 創価学会員の犯行
●武まゆみ→、埼玉・保険金殺人事件犯人 2名殺害(平成12年)無期懲役 創価学会員の犯行
●森田考子→埼玉・保険金殺人事件犯人 2名殺害(平成12年)共犯者で懲役13〜15年の判決 創価学会員の犯行 
●柏市連続通り魔殺傷事件X強盗殺人 創価学会員の犯行の犯行
●引寺利明 →マツダ宇品工場ファミリア暴走連続殺傷事件 引き殺しで1人死亡、11人を殺傷  創価学会員の犯行
●織原城二(金聖鐘) → ルーシー・ブラックマンさん事件 創価学会員の犯行 10人の女性に強姦又は強制わいせつ 内2人の女性が死亡
●山口芳寛 →熊本3才女児遺棄事件。レイプ 創価学会員の犯行。幼女に熱い視線、女児が大好き 強姦殺人無期懲役
●内柴正人→柔道金メダリスト(連続)強姦事件 (2009.5.15付 聖教新聞) 創価学会員の犯行
●アクリフーズ毒入り大量殺人事件 創価学会員の犯行
●リサイクルショップエース大量殺人事件 連続殺人!5人以上を殺して埋める 創価学会員の犯行

237:名無しさん@お腹いっぱい。
15/05/26 22:01:44.62 .net
>>231
他のタブに移ったらと言うか、他のタブは別のバッファだからftが違うだけじゃね?
FileType は local to buffer のはず

238:名無しさん@お腹いっぱい。
15/05/27 12:30:01.89 .net
vimrcリロードでautocmd FileType・・・が効かないの知らなかった

239:名無しさん@お腹いっぱい。
15/05/27 21:55:41.34 .net
>>234
autocmd はイベント時のコマンドを登録するだけだから呼び出しても基本何も発生せんのよ

240:名無しさん@お腹いっぱい。
15/05/31 12:57:04.36 .net
vim scriptの行継続のためのバックスラッシュを挿入する際、いくつスペースをいれるかを決定するオプションがあった気がするのですが名前がわかりません。
なんというオプションだったか教えてください

241:名無しさん@お腹いっぱい。
15/06/01 16:20:58.33 .net
vimrcにこの2行だけ書きました
filetype plugin indent on
syntax enable
vim test.phpでファイルを開いてtest.phpに次のHTMLを書きます
<ul>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ul>
そのあと2行目のhref=""の=の次の文字の所にカーソルを持っていきます。
ここでCTRL+vを押してj押してShift+aを押してダブルクォーテーション内を複数行変数できる状態にします。
<?と打ってEscを押してください。
複数行開始行にのみ文字列が挿入されてインデントが崩れます。
これはなぜですか?

242:237
15/06/01 16:22:42.88 .net
あ。。半角スペースが消えてしまった
@を半角スペースに置き換えてください。
<ul>
@@@@<li><a href=""></a></li>
@@@@<li><a href=""></a></li>
</ul>
ここでは半角スペース4つ置いてますが1つ以上で再現しました

243:237
15/06/01 16:23:50.45 .net
&#9747;複数行変数
○複数行編集

244:名無しさん@お腹いっぱい。
15/06/02 23:07:21.61 .net
vimに慣れてきたらWindowsのテキストエディタでC-f誤爆して困る

245:名無しさん@お腹いっぱい。
15/06/03 00:19:22.89 .net
WindowsでもVimを使いなさい

246:名無しさん@お腹いっぱい。
15/06/03 10:00:26.71 .net
Windows用に作られたgvimか
cygwinの上で走らせるvimだな
gitなどと連携のしやすさなどに差がある

247:名無しさん@お腹いっぱい。
15/06/04 20:11:39.17 .net
ctrl+w vでウィンドウが分かれますがバッファは同じですよね
これを別の空のバッファとして右にウィンドウを表示する方法教えてください
毎回ctrl+w vしたあとctrl+wを2回して:e memo.txtして、vimを終了後にrm memo.txtしてます
用途は、一時的にメモしたいことを書き留めることに使いたいんです

248:名無しさん@お腹いっぱい。
15/06/04 20:44:07.00 .net
>>243
:vnew memo.txt じゃあかんの?

249:名無しさん@お腹いっぱい。
15/06/04 20:45:32.30 .net
>>243
:set splitright
:vnew
でどうだろう。

250:名無しさん@お腹いっぱい。
15/06/04 21:33:56.35 .net
>>244-245
:vnewで実現しました
ありがとうございます
下に出したいときは:newというのも分かりました

251:名無しさん@お腹いっぱい。
15/06/04 22:12:05.47 .net
>>246
:new は上に出るよ。
下に出したきゃ :botright new

252:名無しさん@お腹いっぱい。
15/06/04 22:18:20.57 .net
:new は splitbelow 見てんじゃないっけ

253:名無しさん@お腹いっぱい。
15/06/05 11:47:34.46 .net
wget URLリンク(php.net) -O - | vim -
不正な文字が含まれててUTF-8として開けないんですがUTF-8として読む方法ありませんか?

254:名無しさん@お腹いっぱい。
15/06/06 22:36:30.46 .net
有名な標準的なコマンドだと思ってたけど実はviにはなかったっていうのなんかあります?

255:名無しさん@お腹いっぱい。
15/06/06 22:43:36.29 .net
コマンドではないが%かな
つかviほとんど使ったことないからよく知らない

256:名無しさん@お腹いっぱい。
15/06/07 12:44:27.44 .net
vimに元から入っているphpcomplete.vimってどうやって使うんですか?
<C-x><C-u>押しても補完されないしset completefunc=phpcomplete#CompletePHPしても補完されません

257:名無しさん@お腹いっぱい。
15/06/07 13:53:04.05 .net
>>252
completefunc じゃなくて ofu にその関数名セットして <c-x><c-o>

258:名無しさん@お腹いっぱい。
15/06/07 14:02:03.67 .net
でましたありがとう

259:名無しさん@お腹いっぱい。
15/06/07 17:22:34.77 .net
python,lua,rubyを使わないで変数に標準出力の内容を代入ってどうやりますか?
例えばdateやlsの結果をlet aに入れたい場合

260:名無しさん@お腹いっぱい。
15/06/07 17:59:14.68 .net
>>249
wget URLリンク(php.net) -O - | nkf -Ww | vim -
>>255
let a=system('date')

261:名無しさん@お腹いっぱい。
15/06/08 01:01:21.24 .net
>>256
あざっす

262:名無しさん@お腹いっぱい。
15/06/08 07:13:25.89 .net
wget URLリンク(php.net) -O - | vim -b -
バイナリモード
これならUTF-8として不正なバイトも捨てずに済む

263:名無しさん@お腹いっぱい。
15/06/08 07:45:17.48 .net
>>236 :h ft-vim-indentのg:vim_indent_cont?

264:名無しさん@お腹いっぱい。
15/06/08 10:11:43.31 .net
>>249
nkfとかバイナリモード


265:とか必要ないよ utf-8って分かってるならエンコードをutf-8に固定してあげればいい wget http://php.net/manual/ja/indexes.functions.php -O - | vim - --cmd "set fencs=utf-8"



266:258
15/06/08 14:33:21.65 .net
>>260でも化けるのは何でだろう……と、ようやく原因が分かった。
vimrc で fileencodings (fencs) のリストに iso-8859-1 (latin1) を含めていたせい。
fencs の末尾から iso-8859-1 を取除いたら化けなくなった。
UTF-8 として不正な文字を含む「ほぼUTF-8テキスト」を
 1 UTF-8 としてテスト → エラーあり
 2 ISO-8859-1 としてテスト → エラーなし
 3 よってこのファイルは ISO-8859-1 だな間違いない
となっていた模様。
--cmd は vimrc の設定を上書きできない(--cmd の実行後に vimrc が読まれる)ので
vimrc に set fencs+=latin1 等と書かれている場合は結局化ける。
逆に fencs に utf-8 があって且つ latin1 が無ければ、--cmd で指定しなくても化けずに開ける。

267:名無しさん@お腹いっぱい。
15/06/08 16:53:10.58 EzwtakRuQ
-c "e ++enc=utf8"

268:名無しさん@お腹いっぱい。
15/06/09 07:41:04.00 .net
--cmd "autocmd StdinReadPre * set fencs=utf-8"

269:名無しさん@お腹いっぱい。
15/06/10 16:23:02.30 .net
&#65533;が何の文字なのかさっぱり
phperはこんな文字を仕込むのか、はたまた不正に書き換えられたものなのか

270:名無しさん@お腹いっぱい。
15/06/10 17:28:46.17 .net
>>249
このurlが返すhtmlの277行目だかに U+00e3 があってそれがVimで変換エラーになるっぽいな
でも<c-v>ue3 するとそれらしき文字が入力される謎

271:名無しさん@お腹いっぱい。
15/06/12 00:53:29.73 Ghes+9YOO
zhやruと見比べればさらに変わりやすいと思うけど
UTF8の先頭バイトで索引生成されてるんだよな
CGIがやっつけでバグってる

272:名無しさん@お腹いっぱい。
15/06/16 01:38:20.61 .net
ttoc.vimについてなんですが、
TLet g:ttoc_rx_txt = '^[#2字下げ].*[#「.*」は.見出し]$|^▼\+ .*$'
これ無視されてしまうんですが正規表現間違ってます?
TLet g:ttoc_rx_txt = '^[#2字下げ].*[#「.*」は.見出し]$'
TLet g:ttoc_rx_txt = '^▼\+ .*'
というように分ければ読んでくれるんですが一行に纏めないと上の方に書かれてる行しか読んでくれないもので。両立したいです
他のデフォルトで入ってる拡張子用のは|使って一行に纏められてるんですが……

273:名無しさん@お腹いっぱい。
15/06/16 05:49:46.79 .net
>>267
\|

274:名無しさん@お腹いっぱい。
15/06/16 17:20:41.57 .net
>>268
それです!出来ました!ありがとうございました!
すみません、よく見てませんでしたorz

275:名無しさん@お腹いっぱい。
15/06/16 22:15:47.71 .net
:e でファイル名のないウィンドウを編集する方法ってありますか?
普段:tabeを使ってるんですけどタブを使わないで:b 1みたいにして切り替える方法に慣れようと思いまして。
一時的なメモにするのでファイルに保存する必要もないです

276:名無しさん@お腹いっぱい。
15/06/16 22:39:49.60 .net
:enew

277:名無しさん@お腹いっぱい。
15/06/16 22:46:05.55 .net
>>270
:enew

278:名無しさん@お腹いっぱい。
15/06/17 00:37:47.03 .net
>>271-272
できましたありがとうございます

279:名無しさん@お腹いっぱい。
15/06/17 10:45:14.62 .net
slackって招待されないと見えないんだな

280:名無しさん@お腹いっぱい。
15/06/17 19:32:23.91 .net
vim、中に出すぞ!

281:名無しさん@お腹いっぱい。
15/06/17 19:39:04.65 .net
emacsならまだ

282:名無しさん@お腹いっぱい。
15/06/17 20:56:00.91 .net
右左にウィンドウを分割して、左側にカーソルがあるとします
:shや:!lsしたときに左側だけで実行して、右側のウィンドウは編集画面のままにすることはVimではできないんでしょうか?

283:名無しさん@お腹いっぱい。
15/06/17 20:59:32.21 .net
そういうのはscreenとかtmuxの範疇な気がする

284:名無しさん@お腹いっぱい。
15/06/17 23:51:01.27 .net
連番作成で覚えやすいコマンドありません?
例えば、PAGE061.jpgからPAGE252.jpgまであるファイルリストをPage_001.jpgからPage_191.jpgの連番にするってのをよくやりますが、
今は:vnewして:call setline(1,range(1,60))してゼロ埋めしてからggyG:q!してPAGE061.jpgの上にペーストしてからPAGE192.jpg以下を消してPAGEをPage_に置換してます
めんどいです。:callのとこいつも忘れます

285:名無しさん@お腹いっぱい。
15/06/18 00:44:23.46 .net
>>279
一気にやるなら
:%s/PAGE\(\d\+\)\.jpg/\=printf('Page_%03d.jpg', str2nr(submatch(1))-60)
連番作成だけならマクロ、関数、increment.vim みたいなプラグインのどれかかな
個人的には UNIX 版だし seq でやんのが一番ラクだと思う
:.!seq -f '\%03g' 1 191

286:名無しさん@お腹いっぱい。
15/06/18 00:59:35.51 .net
>>280
seqのは覚えやすそうですね。いただきます
マクロはともかくプラグインをわざわざ入れるのは抵抗がありますね

287:名無しさん@お腹いっぱい。
15/06/18 01:01:08.02 .net
プラグインならvim-rengbangとかかね

288:名無しさん@お腹いっぱい。
15/06/18 20:23:19.67 .net
更新があるとタブに+が表示されますけど
これを任意の文字か文字列で表示することってできますか?

289:名無しさん@お腹いっぱい。
15/06/18 21:38:45.47 .net
emmet-vimで、!を展開すると、
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
と、なるんですが、<meta charset="UTF-8" />のように、
metaタグのところを />で閉じるにはどうしたらいいですか?

290:名無しさん@お腹いっぱい。
15/06/18 23:14:50.39 xUHdl6GTJ
>>284
URLリンク(github.com)
Adding custom snippets

291:名無しさん@お腹いっぱい。
15/06/19 01:00:36.44 .net
英語詳しくないけどドキュメントにempty_element_suffixを設定したらできるって書いてあったよ多分
ドキュメントをempty_element_suffixで検索するとその下にサンプルが合ったから多分それ書いたら行けると思う

292:名無しさん@お腹いっぱい。
15/06/19 01:28:14.12 .net
>>283
vimは
:h setting-tabline にある MyTabLine() 関数を改造
gvimは
:h setting-guitablabel にある GuiTablLabel() を改造

293:名無しさん@お腹いっぱい。
15/06/19 01:31:08.54 .net
>>281
seq のやつもコマンドか関数にしてしまえばもっと楽チン
:Seq 1 191 ってやれば 1から191まで3桁前ゼロで連番作るやつとか
-f ‘%03g’ とかうつのめんどくさいし

294:名無しさん@お腹いっぱい。
15/06/19 12:02:23.67 .net
/x/a/1.txt
/x/b/2.txt
/x/c/3.txt
/x以下に置いてあるサブディレクトリ内のテキストファイルをvimで全て開く方法を教えてください
ファイルの位置は/dir/dir/fileでこれ以上深い階層は存在しません

295:名無しさん@お腹いっぱい。
15/06/19 13:49:24.51 .net
>>289
vim x/**/* とか

296:名無しさん@お腹いっぱい。
15/06/19 14:35:24.09 .net
kaoriyaさんのWin用vimのzipからhz_ja.vimをいただいて:%Zenkakuを使ってみたんだけど、・が全角にならない
156行目あたりに書いとけばいいんだろうけどどこに?

297:名無しさん@お腹いっぱい。
15/06/19 14:47:03.28 .net
失礼、事故解決
let zen_kanaとlet han_asciiとlet s:mx_han_kigouとlet s:mx_han_kigouと176行目に足したら・に対応して動いた

298:名無しさん@お腹いっぱい。
15/06/19 16:32:15.91 .net
>>289
Vim 起動時ならシェルにまかせる
Vim 内からやるなら :argadd x/**/*.txt みたいな

299:名無しさん@お腹いっぱい。
15/06/20 23:34:04.38 .net
ヴィジュアルモードで選択した時に>>や<<すると選択が解除されるんですが
解除されないようにする方法ありますか?

300:名無しさん@お腹いっぱい。
15/06/21 00:54:22.94 .net
>>294
再度>>や<<するのが目的なら . を押す。それ以外なら gv

301:名無しさん@お腹いっぱい。
15/06/21 01:27:34.94 .net
>>294
.が好きじゃなければ
vnoremap > >gv
vnoremap < <gv

302:名無しさん@お腹いっぱい。
15/06/21 11:47:52.83 .net
. が好きじゃないVimmerってどないやねんw

303:名無しさん@お腹いっぱい。
15/06/21 12:08:36.68 .net
やりたいようにやればいいんだよ
TMTOWTDI

304:名無しさん@お腹いっぱい。
15/06/21 14:54:52.46 .net
何でvimを起動すると「Vim はオープンソースであり自由に配布可能です」って日本語で表示されるんですか?
あと:messageすると「日本語メッセージ翻訳 村・・・」って出るんですが日本語矯正されるのがいやです
日本語化した覚え無いんですが英語に治す方法を教えてください

305:名無しさん@お腹いっぱい。
15/06/21 14:57:03.67 .net
.bashrcでもいじっとけ

306:名無しさん@お腹いっぱい。
15/06/22 06:32:23.00 .net
.vimrc に
language english
って書いておけば?

307:名無しさん@お腹いっぱい。
15/06/22 13:40:45.22 .net
you can speak english.
だろ?

308:名無しさん@お腹いっぱい。
15/06/22 14:44:48.84 .net
dwで単語の右側の半角スペースも削除されるんですが
単語だけを削除したいばあいはどうしたらいいですか?

309:名無しさん@お腹いっぱい。
15/06/22 15:25:47.51 .net
>>303
de

310:名無しさん@お腹いっぱい。
15/06/22 16:26:32.95 .net
ありがとうございます
eは単語の終わりに移動するコマンドなんですね

311:名無しさん@お腹いっぱい。
15/06/22 16:36:28.50 .net
>>305
です
:h motion.txt に色々載ってるので他にも興味あればどうぞ

312:名無しさん@お腹いっぱい。
15/06/23 10:15:25.46 .net
vimに含まれているautoloadディレクトリ内のvimファイルのインデントがタブだったり半角スペースだったり両方混じってたりするんですが
公式にコーディング規約で統一されてないんですか?自由ってことですか?

313:名無しさん@お腹いっぱい。
15/06/23 10:45:44.94 .net
koronさんってむかし2ちゃんにいたのか
何でいなくなったんですか
スレリンク(unix板)

314:名無しさん@お腹いっぱい。
15/06/23 16:12:04.32 .net
URLリンク(i.imgur.com)
この文字化けしてる行のテキスト開こうとすると開けなくて文字化け通りの新規ファイルが作成されちゃうんですが
ファイルブラウザの文字コードとかあるんですか?

315:名無しさん@お腹いっぱい。
15/06/23 16:13:15.89 .net
>>308
ソフ板のほうで呼んだら出てくると思うよ。たぶん。

316:名無しさん@お腹いっぱい。
15/06/23 16:21:55.37 .net
>>309
普通にファイルを開くときの文字コード判定処理が動いてたと思う
エンコード指定して開きなおしてみるとか。
:e! ++enc=

317:306
15/06/23 16:46:33.66 .net
utf8のunixなんですがなんでしょうね……
なんかヘルプのP7,P12にも文字コードがらみのこと書いてありますね
日本語いっぱい使ってますしファイルブラウザ使えないと結構めんどくさいですね。一応タブ補完使えば何とかなりますけど

318:名無しさん@お腹いっぱい。
15/06/23 17:27:50.33 .net
プラグインの話で恐縮ですが、tcommentで指定のないfiletypeのコメント書式が/* */ なのを
# に変更したいんですが、どうすればいいですか?

319:名無しさん@お腹いっぱい。
15/06/23 18:18:17.07 .net
>>309
netrwで全角ではじまるディレクトリ名が扱えない &#183; Issue #489 &#183; vim-jp/issues &#183; GitHub
URLリンク(github.com)
netrw v150 以降では直っているそうです。
netrw.vim - Network oriented reading, writing, and browsing (keywords: netrw ftp scp) : vim online
URLリンク(www.vim.org)

320:名無しさん@お腹いっぱい。
15/06/23 18:39:54.87 .net
>>314
おお!v150でバッチグーでいけました!!
ありがとうエロイ人!

321:名無しさん@お腹いっぱい。
15/06/24 14:50:18.82 .net
>>313
つ :h tcomment#DefineType()
ちょっと試した感じだとこれでいけた
:cal tcomment#DefineType('txt', '# %s')
マニュアル嫁

322:名無しさん@お腹いっぱい。
15/06/24 18:50:38.08 .net
fizzyfinder以外で一年以内に更新されているあいまい検索ができるプラグインってありませんか?

323:名無しさん@お腹いっぱい。
15/06/24 19:19:06.60 .net
>>317
思いつく限りだが ctrlp.vim, unite, fzf
俺はctrlpユーザー

324:名無しさん@お腹いっぱい。
15/06/24 21:03:52.57 .net
バッチグー(笑)

325:名無しさん@お腹いっぱい。
15/06/25 12:27:15.13 .net
5000aabcdefgh
これすごい重いんですがなんでですか?

326:名無しさん@お腹いっぱい。
15/06/25 15:38:10.98 .net
ファイルが更新状態であるかvim scriptでどうやって調べるのか教えてください

327:名無しさん@お腹いっぱい。
15/06/25 15:52:56.84 .net
&modで解決しました
英語版スタックオーバーフローのコピペしただけでこれが何をするのかよく分かりません
:h modするとスクリーンサイズがなんたらってのがヒットしてよくわりませんでした

328:名無しさん@お腹いっぱい。
15/06/25 16:10:30.00 .net
>>322
:h expr-option
:h 'mod'

329:名無しさん@お腹いっぱい。
15/06/25 18:32:17.18 .net
>>320
Vim の実装上一行が長くなるとめっちゃ遅くなる
試しに 5000a を 5000o にしたらすぐに終わるはず

330:名無しさん@お腹いっぱい。
15/06/26 16:35:19.60 .net
あ、ほんとだaだとものすごい時間かかったのにoだと6秒ぐらいで終わりました
間違えてタイプミスしたら時間を無駄にするので気をつけようと思います

331:名無しさん@お腹いっぱい。
15/06/27 08:56:10.41 .net
突然dat落ちってやつなってた。
なんでだろ

332:名無しさん@お腹いっぱい。
15/06/28 18:36:38.13 .net
for i in range(3)
execute ":normal o".i
echo i
sleep 1
endfor
これ最後に本文エリアにまとめて文字が表示されるのはなぜですか?
echoで表示された文字と一緒に表示されません

333:名無しさん@お腹いっぱい。
15/06/30 16:05:15.07 .net
:hしてから:qしても:ls!でバッファに残ってますが何でですか?

334:名無しさん@お腹いっぱい。
15/06/30 20:04:02.92 .net
>>328
ヘルプ読まずに書きますが、:quit とか :bdelete だと 'buflisted' が 0 になるだけだからじゃないかと
:ls! でも出ないようにしたければ :bwipeout でいける

335:名無しさん@お腹いっぱい。
15/06/30 20:07:13.90 .net
>>327
スクリプト実行中は画面が更新されないから、これでいけるはず
for i in range(3)
 execute ":normal o".i
 redraw!
 echo i
 sleep 1
endfor

336:名無しさん@お腹いっぱい。
15/07/01 13:06:05.85 .net
vim-javacomplete2のインストール方法の記事を誰か書いて!!!
アフィ貼ってくれたらクリックするからおねがい!

337:名無しさん@お腹いっぱい。
15/07/02 17:53:18.47 .net
URLリンク(github.com)って誰が管理してるんですか?

338:名無しさん@お腹いっぱい。
15/07/02 18:30:45.51 .net
>>332
知らなかったから調べてみた
ここからたどると
URLリンク(vim-scripts.org)
この二人がメインっぽいな
URLリンク(github.com)

339:名無しさん@お腹いっぱい。
15/07/02 19:16:23.60 .net
海外版mattnとkoronみたいな人たちか

340:名無しさん@お腹いっぱい。
15/07/02 21:11:00.22 .net
ある程度ここで質問して行ったら自然にドキュメントの読み方が分かるようになって自分の力で簡単なプラグインなら書けるようになりました
ここの先輩方に感謝します

341:名無しさん@お腹いっぱい。
15/07/02 22:03:04.87 .net
>>334
上の人は知らんけどgmarikはVundle作者
しかし最近は総本山であるvim.orgにいちいち上げたりしなくなってしまった
まだ一定数利用者いるようなんだがな

342:名無しさん@お腹いっぱい。
15/07/02 22:08:17.84 .net
>>335
よかったな
便利なの出来たら公開するといいよ

343:名無しさん@お腹いっぱい。
15/07/03 09:41:54.64 .net
文章を入力する箇所、ファイル名や文字エンコーディングが表示される箇所、
E100みたいにエラーが表示される箇所のVimでの呼び方が知りたいんですが
Vimの画面の名称の説明ってヘルプのどこに載ってますか?

344:名無しさん@お腹いっぱい。
15/07/03 19:04:17.07 .net
>>338
> 文章を入力する箇所
→ウィンドウ?
> ファイル名や文字エンコーディングが表示される箇所
→ステータスライン
> E100みたいにエラーが表示される箇所
→コマンドライン
あとset showmodeした時に表示される箇所
→最下行
>Vimの画面の名称の説明ってヘルプのどこに載ってますか?
各名称をまとめて説明してあるヘルプはないんじゃないかなぁ

345:名無しさん@お腹いっぱい。
15/07/04 15:42:18.82 .net
>>338
:h definitions くらいかね

346:名無しさん@お腹いっぱい。
15/07/08 15:41:14.62 .net
macに初めから入ってるvimはなぜCursorLineNrが適応されないのか

347:名無しさん@お腹いっぱい。
15/07/08 15:50:35.77 .net
aaaaa bbbbb ccccc
ddddd eeeee fffff ggggg
hhhhh iiiii
こういう風に改行区切りの文字列が100行あります
これを
aaaaa
bbbbb
のように半角スペースを改行に変換して1行1データだけにしたいのですが
置換すればすぐなんですが今回は操作を記録するコマンドでやりたいです
qa
[SPACE]i[ENTER]
q
100@a
100回繰り返したかったんですが1行分までしか動きません
何故ですか?

348:名無しさん@お腹いっぱい。
15/07/08 19:17:11.85 .net
>>342
ggqa/ i<Enter><Esc>xq
100@a

349:名無しさん@お腹いっぱい。
15/07/08 19:21:08.53 .net
>>341
> CursorLineNR has been added relatively recently around version 7.3.488.
バージョンが古いからだべ
OS X (10.10.4) の vim はパッチ無しの 7.3

350:名無しさん@お腹いっぱい。
15/07/08 20:30:32.92 .net
>>343
ggqa/ r<Enter>q
100@a

351:名無しさん@お腹いっぱい。
15/07/08 21:27:17.15 .net
>>345
これのほうがええな

352:名無しさん@お腹いっぱい。
15/07/09 01:06:56.98 .net
最近Vundleからvim-plugに乗り換えたけど更新速いしpost scriptみたいのも設定できて楽でいいわ
ソフトウェアに韓国もクソもないんや

353:名無しさん@お腹いっぱい。
15/07/09 01:14:21.83 .net
でも韓国が潰れたら提供ストップするかもね

354:名無しさん@お腹いっぱい。
15/07/09 01:32:56.74 .net
>>344
アップデートしたらできました!!ありがとうございます!!

355:名無しさん@お腹いっぱい。
15/07/09 11:43:22.52 .net
vimgolf見るだけで勉強になりました

356:名無しさん@お腹いっぱい。
15/07/09 15:32:55.19 .net
vim-plugが早いのってシャローコピーで余計なものをダウンロードしないから
それならvundleでもneobundleでもできると思うけど

357:名無しさん@お腹いっぱい。
15/07/09 15:48:14.70 .net
>>351
中身読んでないが並列処理するからじゃねえの?Vundleにそういうのはなかったぞ
Neoなんたらは知らん

358:名無しさん@お腹いっぱい。
15/07/09 16:56:18.97 .net
Neobundleは簡単だと思うぞ
俺みたいな初心者でもほいほいプラグイン試せる

359:名無しさん@お腹いっぱい。
15/07/09 17:08:41.39 .net
ctrl+w ctrl+wじゃなくて特定の一発で特定のwindowをアクティブにする方法伝授してください

360:名無しさん@お腹いっぱい。
15/07/09 17:23:04.23 .net
>>354
たとえば <C-W>3j で3つ下のウィンドウに行くけど、そういうのじゃだめ?
一時期好んで使ってた設定を書いといてみる
" <F2>で前のウィンドウに移動し、最大化
nnoremap <F2> <C-W>W<C-W>_
" <F3>で次のウィンドウに移動し、最大化
nnoremap <F3> <C-W>w<C-W>_

361:名無しさん@お腹いっぱい。
15/07/09 17:28:29.91 .net
>>354
ネタではなくクリックするのが一番早い
あとコマンドでできるけど window の番号を指定しないといけない
:2wincmd w
もちろん上のをマッピングして…とかは可能だけど微妙だよな
俺は <C-w>j,k,h,l をそれぞれsj,sk,sh,slみたいにしてやってるわ
もしかしたらそういうプラグインがあるかもしれんが…

362:名無しさん@お腹いっぱい。
15/07/09 17:50:59.04 .net
vim-submodeで
<C-w>jjjj とか連続して移動できるようにすれば

363:名無しさん@お腹いっぱい。
15/07/09 20:40:11.91 .net
>>354
この辺はご存知でした?
<C-W>t 一番左上のwindowに移動
<C-W>b 一番右下のwindowに移動
<C-W>p 直前にいたwindowに移動

364:名無しさん@お腹いっぱい。
15/07/09 21:01:26.14 .net
>>358
351じゃないけど…こんなんあるんか
知らんかった

365:名無しさん@お腹いっぱい。
15/07/09 21:40:32.04 .net
CTRL-WとCTRL-Xは絶滅しろ!

366:名無しさん@お腹いっぱい。
15/07/09 21:59:55.14 .net
>>360
<Nop>しとけよww

367:名無しさん@お腹いっぱい。
15/07/09 22:00:55.13 .net
>>360を選択してCtrl-X、vipを開いてCtrl-VしてCtrl-W

368:名無しさん@お腹いっぱい。
15/07/09 22:57:43.05 .net
>>360
CTRL-W は :wincmd で絶滅出来るやん

369:名無しさん@お腹いっぱい。
15/07/10 00:02:52.72 .net
つかどっちもマッピングしたらええんや

370:名無しさん@お腹いっぱい。
15/07/10 15:16:07.90 .net
nnoremap <C-m> i<CR><Esc>したらEnterにも割り当てられるんですが、別々にできませんかね
+押すんでEnterは滅多に押さないんですけど

371:名無しさん@お腹いっぱい。
15/07/10 17:36:04.13 .net
>>365
CUI Vimは端末の仕組み的に無理
GVimは無理じゃないけど今の作り的には同じになっている

372:名無しさん@お腹いっぱい。
15/07/12 23:57:25.01 .net
1. :!ls
2. 続けるにはENTERを押すかコマンドを入力してくださいって出るのでqを押す
3. jとかkとかq以外のキーを押す
4. 記録中になる
何でqqしたことになるんですか?
2のところで押したqがコマンドとして打ったことになってるのは何故ですか?

373:名無しさん@お腹いっぱい。
15/07/13 02:49:38.99 .net
>>367
>2. 続けるにはENTERを押すかコマンドを入力してくださいって出るのでqを押す
ここで q というコマンドを入力してるじゃん
qコマンドは次の文字がレジスタ指定だから j と入力したのなら、レジスタ j にマクロが記録される

374:名無しさん@お腹いっぱい。
15/07/13 08:40:51.11 .net
いまいちわかりません
2のところまではshellで、何かキーを押したらvimに戻ってくるんじゃないんでしょうか?
だから2のとこでqがコマンド扱いになる理由がよくわかりません

375:名無しさん@お腹いっぱい。
15/07/13 12:12:39.47 .net
>>369
!sleep 1
とかの間にqqを押せばわかる

376:名無しさん@お腹いっぱい。
15/07/13 12:57:24.22 .net
> 2のところまではshellで、何かキーを押したらvimに戻ってくるんじゃないんでしょうか?
すでにVimに戻ってきてるけど画面だけは戻っていない状態。
enterを押せば画面が戻るし、それ以外ならそのままコマンド実行。

377:名無しさん@お腹いっぱい。
15/07/13 16:03:49.60 .net
俺も>>367の疑問には同意だなぁ。
>>371
enterはenterの挙動をせずにshellの結果を閉じるだけなので整合性が取れてないと思うんだ。
ENTERを押すかコマンドを〜だからenterは特別かというと、spaceも同様にspaceの挙動をしないわけで。

378:名無しさん@お腹いっぱい。
15/07/13 16:09:38.00 .net
あ、>>367に些細な突込みを。
> 何でqqしたことになるんですか?
qjとかqkをしたことになっているよ。
マクロ記録のコマンドはqに続けてレジスタ指定というものであって、
もしもqqのみがマクロ記録と覚えているならそれは間違い。

379:名無しさん@お腹いっぱい。
15/07/13 21:00:54.06 .net
enterとspaceは特別。後は上にスクロールしたりするキーなども特別扱い。
(外部コマンドの出力はスクロールできないけど)
:help hit-enterに書いてある。

380:369
15/07/14 05:11:35.64 .net
>>374
うおお。ありがとう。

381:名無しさん@お腹いっぱい。
15/07/15 10:27:53.29 .net
外部コマンドを実行したらVimに戻れなくなってしまいまして
tmuxでC-b xして切ったらVimの編集内容が消えてしまいました
復活させたかったんですがなんでスワップファイルがないんですか?

382:名無しさん@お腹いっぱい。
15/07/15 11:46:53.01 .net
>>376
swapファイルは先頭に . 付いてるから ls じゃ表示されないよ。
ls -a
したら表示されないかい?

383:名無しさん@お腹いっぱい。
15/07/15 14:33:11.92 .net
のこってません><

384:名無しさん@お腹いっぱい。
15/07/15 23:40:26.58 .net
URLリンク(raw.githubusercontent.com)
この画像の14行目みたいに保管するときにツールチップみたいに表示されるのはVimのなんて機能ですか?

385:名無しさん@お腹いっぱい。
15/07/16 00:02:02.67 .net
>>379
popup menu
:h popupmenu-completion

386:名無しさん@お腹いっぱい。
15/07/16 01:31:32.30 .net
>>379
:h balloon-eval

387:名無しさん@お腹いっぱい。
15/07/16 02:40:18.20 .net
>>381
あ、そっちだわw

388:名無しさん@お腹いっぱい。
15/07/16 09:35:50.50 .net
>>380-381
ありがとうございます
ヘルプ見てスクリプト書いてみます

389:376
15/07/16 11:11:18.03 .net
balloon-eval使ってみたんですがこれgvimでしか使えませんでした
画像の機能はターミナルでも表示されるので別の機能かもしれません

390:名無しさん@お腹いっぱい。
15/07/16 12:13:33.14 .net
>>384
あらごめん。そしたら377さんの言うとおりpopupmenuだと思う。jediのページだし。

391:名無しさん@お腹いっぱい。
15/07/16 18:13:41.31 .net
どっちも違うんじゃね?
jedi独自でじっそうしてるんじゃないの

392:名無しさん@お腹いっぱい。
15/07/16 20:50:11.07 .net
>>384
jedi-vim のソースちょっとみたけど >>380 のであってる
ものすごくざっくり言うと
jedi は単に se omnifunc=jedi#completions して、. が入力された時に <C-x><C-o> を呼び出してるだけ
<C-x><C-o> は オムニ補完呼び出すマッピング
function! OreoreCompletion(findstart, base)
if a:findstart
" locate the start of the word
let line = getline('.')
let start = col('.') - 1
while start > 0 && line[start - 1] =~ '\a'
let start -= 1
endwhile
return start
else
return {'words': ['Vim', 'Emacs', 'Sublime Text'], 'refresh': 'always'}
endif
endfunction
set ofu=OreoreCompletion
して INSERT モードで <C-x><C-o> したらポップアップ出るはず
詳しくは、h: complete-functions

393:376
15/07/16 23:43:05.38 .net
>>385 >>387
教えていただいた後にヘルプを読んだんですが勘違いでしたらすいません。
このツールチップみたいなのとは別に補完ボックスも表示されていたので補完とは違うような気がしました。
分からない対象は画像の14行目の(format, tuple=None)の機能です。

394:名無しさん@お腹いっぱい。
15/07/17 00:34:58.23 .net
急な出費でお困りの方キャッシング・カードローンまとめをぜひご活用下さい。
URLリンク(komattarasoudan.seesaa.net)
最近髪でお悩みの方悩まずはこちらをご参考だて下さい。
URLリンク(kaminokehahaeru.seesaa.net)

395:名無しさん@お腹いっぱい。
15/07/17 15:50:06.02 .net
vim+tmuxでたまに描画がおかしくなるのはncursesとtmuxの問題?

396:名無しさん@お腹いっぱい。
15/07/17 16:31:48.89 .net
>>390
昔がまんしながらつかってた
default-terminal "screen-256color" にしたらうまくいった

397:名無しさん@お腹いっぱい。
15/07/17 16:59:38.83 .net
どうやるとおかしくなるのか書いた方がよいかと

398:名無しさん@お腹いっぱい。
15/07/17 18:19:32.09 .net
xtermを設定してたけどscreen-256colorにしてもダメだった
再現方法が分かんない
vim以外でだとncursesでpadをスクロールするときとかになる
例えばcmusで大量のファイルを表示させて1画面分以上スクロールしてからg出戦闘に戻ると描画がおかしくなる


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

287日前に更新/228 KB
担当:undef