Vim Part28

■ このスレッドは過去ログ倉庫に格納されています
2018/05/17(木) 19:18:17.53
Vim 6以降に関する話題、Part28です。
http://www.vim.org/

前スレ
Vim Part25 [転載禁止]?2ch.net
http://peace.2ch.net/test/read.cgi/unix/1427713482/
Vim Part26
http://mevius.2ch.net/test/read.cgi/unix/1455436351/
Vim Part27
http://mevius.5ch.net/test/read.cgi/unix/1507038883/

関連情報は>>2-6あたり
2018/09/08(土) 01:02:04.54
UNIXに元々入っているからって理由だけでvim使ってる
emacsとかよく聞くけどこっちも元から入ってるんけ
2018/09/08(土) 01:38:55.21
こういう話題でも今更ながら盛り上がるけど、
Vimの挿入モードの操作性が割と貧弱なのは周知のことじゃないの?
そういう風に使うものでもないし。
2018/09/08(土) 04:12:14.78
サーバのVimでヤンクしたら操作してるこっちのPCのクリップボードにも入ってほしい
2018/09/08(土) 04:50:49.64
それは tmux でもできるし、ターミナルエミュレータの機能でもできる
2018/09/08(土) 05:00:00.14
tmuxでもできるの?
2018/09/08(土) 05:03:00.54
ああ、tmuxでもできるけど、tmuxでやると行番号は入るし行末にもスペースが入るから複数行コピーはめんどくさかったんだった
コピペのたびにset nonumberも面倒いし
2018/09/08(土) 05:05:58.01
こっち側のクリップボードの中身をサーバのvimにpで貼り付け出来ないから、vimのインサートモードの状態で⌘+vで貼り付けたらインデントがむちゃくちゃになってしまう
2018/09/08(土) 11:25:26.11
ssh経由で手元のマシンのクリップボードに入れるマッピングしてるな
ヤンク→クリップボードだとゴミだらけになるから明示的なマッピング
2018/09/08(土) 12:21:29.84
shift+insertで貼り付けるとインデントがおかしくなるのは
貼る前に:set nocindet :set noautoindentとやってからやると大丈夫だけど
これがものすごくめんどくさい
2018/09/08(土) 14:54:55.15
貼り付けインデント崩れでよくやるのは、
:set paste してから貼り付けて :set nopaste で戻すかな
これ忘れて崩れた時は、ヴィジュアルとかで範囲選んで = のvim任せ再インデントとかもたまに
2018/09/08(土) 19:47:17.74
>>377
bracketed paste modeに対応したバージョン使ってる?
2018/09/08(土) 19:55:27.99
https://ttssh2.osdn.jp/manual/ja/usage/tips/vim.html#Bracketed
これも見ておくと便利
2018/09/08(土) 22:31:26.14
昔は貼り付け時にインデントおかしくならないように貼り付け用マッピングを用意してたけどいつの間にかいらなくなった
2018/09/09(日) 02:48:43.64
コピーがYなのが一番不可解なんだけどこれ慣れるもんなの?
偏屈なのか使う奴だけにしてくれ
2018/09/09(日) 06:13:20.12
>>382
コピーじゃなくてヤンクと考えればいいよ。
2018/09/09(日) 07:24:26.31
しばらく使ったら「このキーは何の頭文字か」とかまったく気にならなくなるぞ
重要なのはホームポジションからの距離
2018/09/09(日) 10:47:43.24
vimと違ってemacsは日本語関連の愚痴聞かないがあっちはIMと仲良くやってるのか
マウスもカーソルキーもない時代に高性能なクリップボード作ったとかビルジョイ未来に生きてるな
2018/09/09(日) 10:55:08.42
Emacsも使うけど日本語で特別な問題を感じたことはないな。
Vimの方が経験が浅くてぼんやりそういう印象を持っていただけだけど、
ここに書かれているような説明で正しいのかな?

https://www.soum.co.jp/misc/vim-no-susume/12/l
2018/09/09(日) 10:57:25.47
ごめん。変な文字が入った。
> https://www.soum.co.jp/misc/vim-no-susume/12/l
https://www.soum.co.jp/misc/vim-no-susume/12/
2018/09/09(日) 12:12:35.52
>>379
今xtermで試したらずれなかった
けど俺が普段使ってるターミナルエミュレータだと駄目みたいだ
>>380見てなんかやれば直せる?のかもしれないけどこれを理解するのが大変そうだ
2018/09/09(日) 13:52:09.91
set keywordprg=:helpをやるとshift+kでカーソル位置の文字でヘルプ引けるのな
vimrcを弄る時の手間ちょっと減るわ
2018/09/09(日) 18:34:01.90
あまり頓着してないけどタブ派かスペース派でも分かれそう
2018/09/09(日) 18:41:28.65
スペース4文字いちたく
2018/09/10(月) 20:23:37.46
デフォルトだとタブがスペース8個分になるのはどこから来てるんだろう(´・ω・`)
2018/09/11(火) 02:44:37.04
全角はスペース2個分だから、全角4個分でスペース8個とか
2018/09/11(火) 08:00:30.93
>>392
https://superuser.com/questions/355863/why-is-the-default-tab-size-8-spaces-where-does-this-come-from-and-why-is-it-th

ベストアンサーに対するコメントの最後2つが最もらしいけど、
1) タイプライターの時代に数字を含む表を作成するのにセルの幅が8つだと7桁までの数字を格納できて一般的な用途で都合が良かった
2) 印刷物のパラグラフの最初のインデントは5文字(1インチ)なのでタブを5文字に変更しても良さそうなものだが、コンピューターの時代になっても8文字が使われ続けたのはバイナリの計算で5よりも8を足したり引いたりする方が楽だったから
2018/09/11(火) 15:43:28.84
初心者だから筋違いなこと言ってるかもしれないが、タブインデントのときに行移動すると、インデントしてるタブ自体が文字としてカウントされるからめんどくさい
スペースインデントなら行頭の文字にカーソルが入るんだが
2018/09/11(火) 20:37:42.50
POSIXによると最も基本的なshでも$()によるコマンド置換ができるようですが
vimのft=shにおいて$()が正しくシンタックスハイライトされません。
これってバグ報告やらをすべきでしょうか。
vim8.1
2018/09/12(水) 00:25:28.95
仮想コンソールからfbtermの上でvimを開くと配色設定バグるんだけど何が原因なんだろ
syntax on
set t_Co=256
colorscheme desert256
設定はこれだけどvim全体がなぜかシアン色っぽくなってかなり見にくい
fbterm使わないとvimは白黒のままだし設定不足かな
2018/09/12(水) 06:23:44.65
>>396
自分も8.1 (MacのHomebrewの最新版) だけど
vim -u NONE <filename>.sh
で起動して
:set filetype=sh
:syntax on
したら $() にちゃんと色つくな

一方で
https://stackoverflow.com/questions/2576687/how-to-highlight-bash-scripts-in-vim#comment84057714_42543354
みたいな話もあるからよくよく自分の環境を確認した方がいいな
2018/09/12(水) 10:49:51.74
>>398
すいません。言葉足らずでした。
普通に登場する$()はいいのですが,
変数置換で使用されるコマンド置換に対してうまくはたらきません。
例えば
echo ${SOMEVAR:-$(somecmd)}
↑こんなやつです。これは
SOMEVAR変数に値が格納されていたらその値を返し
されていなければsomecmdの実行結果を返すというものです。
ここでの$(somecmd)が,エラーのようなシンタックスハイライトされますが
これはPOSIXでも既定されている正しい構文です。
2018/09/12(水) 12:40:53.29
:help ft-sh-syntax
ちゃんと let g:is_posix = 1 とかやってるか?
2018/09/12(水) 13:07:56.04
オライリーからVimの新しい本が出てるんだけど誰か読んだ?
http://shop.oreilly.com/product/9781680502626.do
翻訳も出てほしいけど入門Vimすら出ないから無理かな?
2018/09/12(水) 13:19:34.89
これ実践Vimの続きじゃねーの

内容は少ししか増えてないってどっかで読んだ気が
2018/09/12(水) 13:22:43.00
は?出版社ちがうじゃんって思ったが実践Vimと同じ人が書いてるのか
実践Vimも読んだことない
再販してほしいんだが
2018/09/12(水) 14:35:12.79
前回の本は素vimをどう使うかの本で、新しいのはプラグインも含めたカスタマイズの本みたいね
実践vimは結構売れたみたいなのになんで絶版になったんや(´・ω・`)
2018/09/12(水) 14:52:11.57
出版社が無くなったからかな?
アスキーと角川の合弁会社?
電子書籍はまだ売ってるのに紙の本はなんで絶版なんだろ
2018/09/12(水) 15:48:51.93
電子版もあるし英語版第二版も出てるしvimもバージョンアップするしで在庫リスクを取りたくないんじゃね?
407名無しさん@お腹いっぱい。
垢版 |
2018/09/12(水) 18:20:14.86
>>397
fbterm 使わなくても :syntax on で色は付くと思うけど
環境変数 TERM が dumb とかだと白黒になるね

fbterm上で256色を扱うには、TERM 環境変数を "fbterm" にする必要がある

$ TERM=fbterm vim

man fbterm の 256 COLOR EXTENSION 参照
シェルの初期化ファイル(~/.bashrc とか)にこういうのを書いておけば毎回指定しなくて済む

if ps "${PPID}" | grep -q fbterm; then
export TERM=fbterm
fi
408名無しさん@お腹いっぱい。
垢版 |
2018/09/12(水) 21:11:59.84
ちなみに今使うんならfbtermじゃなくてyaftのほうが軽いし余計な設定なしにUnicodeが扱えるのでおすすめ
2018/09/12(水) 21:37:44.27
>>407
ありがとう
fbtermは仮想コンソールの出し方調べてる時日本語が化けたから入れたんだ
下手にフォント弄ると欠けるけど
2018/09/12(水) 21:51:55.63
modern vim早速ポチったサンキュー
2018/09/12(水) 22:10:01.56
>>401
こんな表紙オライリーじゃない
412名無しさん@お腹いっぱい。
垢版 |
2018/09/12(水) 22:22:23.59
>>400
すいません
is_posix知らんかったです
ありがとう
2018/09/13(木) 02:53:41.85
>>411
オライリーで販売してるってだけで出版はオライリーじゃないよ
2018/09/13(木) 03:28:33.30
>>413
そうなのか
だから日本ではオライリーからじゃなくてアスキーだったのか
2018/09/13(木) 11:57:37.59
これ使ってみてください!
上手くいってます。

https://store.line.me/stickershop/author/540272/ja
2018/09/13(木) 18:14:16.45
ずっと:wq!で保存終了してたけど:xやZZがあるなら教えてくれよ
変更してないのにタイムスタンプ変わって気になってたんだ
ZQはちと押しにくいな
2018/09/13(木) 23:17:16.07
:xは案外盲点だよな
2018/09/14(金) 00:25:43.25
vi - How to exit the Vim editor? - Stack Overflow
https://stackoverflow.com/questions/11828270/how-to-exit-the-vim-editor

「Vimを終了する方法」、100万PVを突破
https://developers.srad.jp/story/17/05/25/0515242//
ストーリー by hylom 2017年05月25日 16時15分皆初めは困るやつ 部門より
技術系Q&Aサイト「Stack Overflow」に2012年8月に投稿された「How to exit the Vim editor?」という
質問ページのページビューが、100万を突破した(Stack Overflowの公式ブログ)。
このページでは「Vimが終了できない」という質問に対し、Escキーを押し、
続いて『:q』や『:q!』などを入力するという終了方法が親切に解説されている。
この記事は昨年Stack Overflowのページビュー全体の0.005%を稼いだそうで、
平日のピーク時には一時間当たり80人がこのページを見ていることになるという。
また、国別やメインのプログラミング言語別のアクセス統計も示されている。

そらこうなるわ
2018/09/14(金) 02:22:32.78
どういう事?
保存しないで終了したい時は:q!でやってたんだけど、もっと簡単に終われるの?
420名無しさん@お腹いっぱい。
垢版 |
2018/09/14(金) 03:32:05.27
https://qiita.com/clarinet758/items/d778e13d9c24e6f62683
ZQ
:q!と同じで保存せず終了
タイムスタンプは当然変わらない

ZZ
:xと同じで保存して終了
uで変更前に戻してから終了するとタイムスタンプは未更新のまま
あくまでundoだけだからxで消してもタイムスタンプは更新される

:wq!
保存して終了
変更せずともタイムスタンプは常に更新

vimにも終了するショートカットがあったって話
ZZとZQはノーマルモードらしい
確かに:wq!は開いてすぐ終了しても時間変わったわ
2018/09/14(金) 03:44:57.44
サンクス
こりゃ便利だね
2018/09/14(金) 09:02:44.66
変更せず :w しただけで多くの変更検知系プログラムが反応するから明白だと思ってたけど、タイムスタンプ更新されるの意外と知られてないんだな
2018/09/14(金) 09:41:16.02
:wって「write」の頭文字からきてるんだろうから書き込まれて当然と思ってたわ。違うんかな
2018/09/14(金) 11:48:37.84
基本的にZZと:qしか使ってなかった
たまに日本語関係ファイルでZZで抜けられないときがあってそのときは:w!してから:q!とか
2018/09/14(金) 12:16:53.44
shift+zキーなんて押しにくいからZZはほぼ使わない
2018/09/14(金) 12:18:38.38
いつもとちがうキーボードでコロンが見つからないときZZいいよね
2018/09/14(金) 13:14:06.24
:versinの出力結果って:filterで切り取れないのかな。
https://vim-jp.org/vimdoc-ja/various.html#:filter
↑ここを読むかぎりよさげなんだけど。
2018/09/14(金) 13:31:57.57
Vim8のパッケージ機能ってさ
~/.vim/pack/の下にstartやoptを配置すればいいのにどうして
~/.vim/pack/SOMETHING
とかいうディレクトリを挟む必要があるんだろう。将来的になにか拡張されるのかな。
2018/09/14(金) 14:18:54.00
ZZはいいけどZQって遠くね
せめてQQみたいに重ねりゃいいのに
430名無しさん@お腹いっぱい。
垢版 |
2018/09/14(金) 15:05:17.11
>>428だが自決した
各プラグン管理ツールをそこに置けということだ。
Voltなら~/.vim/pack/volt MinPacなら~/.vim/pack/minpac。
なるほどねぇ……
個人で管理する文にはどういう名前にすべきだろう~/.vim/pack/defaultとかかな。
2018/09/14(金) 19:42:17.47
>>430
死ぬなw
_とかでいいんじゃね?
2018/09/14(金) 22:29:49.58
>>431
死ぬな?
「_」は思い付かなかった。頭良いなあんた
2018/09/14(金) 22:54:58.71
昔はジョークで自己解決を自決って略してた気がするけど、最近は本来の自決の意味が失われつつある
そのうちネットから現実世界に広がり、辞書にも自決=自己解決の略として載るのだろう
2018/09/14(金) 23:45:09.22
以前どこかのスレでジョークで自決と書いたつもりだが、自己解決のつもりで書いたのならそれは間違いだ、リアルじゃなくてもそんな言葉は使うもんじゃ無いでんでんと説教された。
2018/09/15(土) 04:29:23.66
「云々 (うんぬん)」を「伝々 (でんでん)」と間違えてるのか?

どっからどこまでがネタか分からんな
2018/09/15(土) 07:38:57.21
ここがなんjやニュー速なら小1時間晒されるレベルのまちがいやめろ
2018/09/15(土) 08:18:11.32
>>432
自決には自殺の意味があるからさ
言いたいことわかってて言ったんだごめん
2018/09/15(土) 13:45:29.45
129 名前:[名無し]さん(bin+cue).rar[sage] 投稿日:2007/05/04(金) 18:32:42 ID:oAXBMef00
すいません、動画が見れないんですけど何のコーディック入れたらいいんですか?

130 名前:[名無し]さん(bin+cue).rar[sage] 投稿日:2007/05/04(金) 19:51:30 ID:oAXBMef00
自決しました

131 名前:[名無し]さん(bin+cue).rar[sage] 投稿日:2007/05/04(金) 20:02:22 ID:727ZIH/W0
待て!はやまるな!
2018/09/15(土) 15:49:31.69
>>438
130は間違った日本語を広めた責任を取って自決すべし
440名無しさん@お腹いっぱい。
垢版 |
2018/09/16(日) 22:23:01.05
vimで例えばiをaにnoremapすると、ciwとかのときにもcawって認識されるじゃないですか
単一コマンドのときだけremapして、ciwみたいなときだけ元々のキーにする方法ありませんか?
2018/09/16(日) 22:46:34.31
もしかして小指がない人?((((;゚Д゚))))ガクガクブルブル
2018/09/16(日) 23:08:54.86
>>440
試してないけどlangmapとか使えばどうにかなるかも
443名無しさん@お腹いっぱい。
垢版 |
2018/09/16(日) 23:44:56.82
noremapの代わりにlangmapするってことでしたら連続したコマンドのときもmap先に固定されませんか?
2018/09/17(月) 01:56:17.56
無理っぽいね
2018/09/17(月) 04:56:01.21
Vimの元ネタのViってまだ開発は続いているんでしょうか?
ググったけどよく分からないです
446名無しさん@お腹いっぱい。
垢版 |
2018/09/17(月) 08:21:24.65
>>440
c のようなコマンドの後続部分は「オペレータ待機モード」のマップの範疇なので
:noremap i a
:ounmap i

ただこの場合は単に
:nnoremap i a
で良い気がするけど

https://vim-jp.org/vimdoc-ja/map.html#omap-info
> あるマップをノーマルモードとビジュアルモードで使用し、そして、オペレータ待機
> モードでは使用しないという場合は、3つのモードに対してマップを定義してからオペ
> レータ待機モードのマップだけを削除します:
> :map xx something-difficult
> :ounmap xx
> ビジュアルモードとオペレータ待機モードの場合や、ノーマルモードとオペレータ待機
> モードの場合も同様にします。
2018/09/17(月) 21:04:37.11
今あるのはviじゃなくてnviじゃね?
unixのコードを取っ払って作り直したvi
軽さ以外であえてこれを使う意味なさそうだけど
2018/09/18(火) 01:53:06.93
vimの矩形貼り付けが覚えられないんだけどいい方法ない?矩形挿入は覚えたけど
プラグインはどれ入れればいいか分からんし管理も面倒っぽいし入れてない
2018/09/19(水) 13:05:35.08
ビジュアルブロックモードで
??????????
?????? ??????
?????????? ????????
????????
????????????



??????????
??????
?????????? ??????
???????? ????????
????????????

ってするのどうやるんや???
2018/09/19(水) 19:57:38.64
よ、読めない…
2018/09/20(木) 06:31:06.16
どゆこと
俺には空白行にしか見えないが
2018/09/20(木) 07:41:11.87
空白行を同数の空白行に変えるだけなので、何もしなくてよい。
HTMLタグをミスって表示されていないだけなら、本人の釈明があるまで放置しておけばよい。
2018/09/20(木) 19:21:05.48
5chってHTMLタグとか効いたっけ。
<br />
<br />
test
2018/09/20(木) 19:21:22.17
効かないじゃん。
2018/09/20(木) 20:18:21.47
Vimで地域化されている単語を利用する方法ってある?
うまく説明できるか怪しんだけども
言語環境変数を日本語でVim(huge版)を起動した時は挿入モードに入るとコマンドラインに「-- 挿入 --」という文字が表示されるのに対して
言語環境変数が英語の場合は「-- INSERT --」という表示になるよね。
この処理を拾えないかな。

具体的には,現在のモードをstatuslineにテキストとして反映したい。
その時に英語で立ち上げたときは「INSERT」,日本語で立ち上げたときには「挿入」みたいな表示になってほしい。
2018/09/20(木) 21:24:52.53
>>455ですが質問をとりけします。
statuslineは扱えるコマンドが貧弱すぎて仮に上述が実現したとしても望む表示は得られないと判断しました。
2018/09/20(木) 22:33:31.10
普通にLANG=C vimで英語起動しちゃイカンのか
このCがcancelのCじゃないらしくて驚いたわ
2018/09/20(木) 23:58:02.64
>>457
LANG=C vim
で起動した場合はA表示して
LANG=ja_JP.UTF-8 vim
で起動した場合はBを表示
っていうふうにしたいんだわ。
if v:lang='ja_JP'
みたいにしたらいいのは知ってるけど
AやBは翻訳されてる対応関係があるので(INSERTと挿入)
せっかくならそれを利用したい。
2018/09/21(金) 08:12:07.04
>>456
判断ミス。関数呼べて好き勝手にできるよ。
460名無しさん@お腹いっぱい。
垢版 |
2018/09/21(金) 14:34:53.98
>>455
Pythonインターフェースが有効なVimなら、Pythonのgettextモジュールが使える
素のVim scriptにはなさそう

https://pastebin.com/FTq4Mb3H

ついでに statusline の設定にも挑戦してみたけど、i_CTRL-O のとき期待通りにならなかった
挿入モードで CTRL-O したときの mode() の値は 'niI' だと思ったのだけど、実際には 'n' になってる
set statusline=%!mode() で確認できる
2018/09/21(金) 17:38:57.82
>>460
横からだけど
mode()でなくmode(1)
にすればいいんでは。
462名無しさん@お腹いっぱい。
垢版 |
2018/09/21(金) 18:31:26.25
>>461
おお、できた

:help mode() の一段落目にちゃんと書いてあるじゃんね
最初からその下の表とばっかり睨めっこして、完全に見落としてました
ありがとう
2018/09/22(土) 16:38:23.18
Vimのleaderをスペースに割り当てようと思ってるんだけど、暗黒美夢王とかのdotfile見るとそのままスペース+他コマンドってやってて

Leaderとしてのスペースとそのままのスペースの違いってleaderに制限時間あるだけ?
2018/09/23(日) 07:55:11.55
>>460
すいません。まさか答えてもらえるとは思えず
返信が遅れてしまいました。
まさにそのようなステータスラインが欲しかったので
ほんとうに感謝しています!
2018/09/23(日) 09:04:08.46
>>463
複数キーのマッピングに制限時間があるかどうかは 'timeout' オプションで制御されるのであって、leaderかどうかは関係ないはず
2018/09/23(日) 14:23:59.75
ヘルプを引かずにvimコマンドの一覧を出す方法ないですかね
索引とは言わんからbashのhelpみたいな要約が欲しい
2018/09/23(日) 14:40:31.24
>>466
"(それぞれのコマンドの)ヘルプを引かずに"って意味だね?

:h quickref
2018/09/23(日) 16:09:58.91
Vimでシステムのコマンドを補完する方法ってある?
C-x C-fでシステムのファイルを補完するように。
2018/09/23(日) 17:43:48.45
いまやったら普通に出てきた
:!ここで何か途中まで打ってタブで
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況