Vim Part28

1名無しさん@お腹いっぱい。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あたり

2名無しさん@お腹いっぱい。2018/05/17(木) 19:27:30.72

3名無しさん@お腹いっぱい。2018/05/17(木) 19:51:17.27
今時vim6やvim7を使う利点ってあるかな

4名無しさん@お腹いっぱい。2018/05/18(金) 08:02:42.43
Vim 8.1 released!

5名無しさん@お腹いっぱい。2018/05/18(金) 08:58:23.81
spacevimってspacemacsの劣化だろ
そんなもん参考に載せるな

6名無しさん@お腹いっぱい。2018/05/19(土) 00:52:16.81
なんですぐdisるのか

7名無しさん@お腹いっぱい。2018/05/19(土) 06:18:42.61
まだVim歴2週間やけどすっげー
WSLの恩恵もあってか感無量やわ

8名無しさん@お腹いっぱい。2018/05/19(土) 17:02:40.48
いまからVim(特にVim 8.1以降)を使うなら,できるだけ既定のプラグイン以外に頼らないほうがいい。
昔は内部端末やらファイルマネージャやら非同期処理やらパッケージ管理やらが最初から可能だからね。

9名無しさん@お腹いっぱい。2018/05/19(土) 19:47:40.79
質問です。

1: Mac でペーストするときに <b0> が入ることがあります。これを避ける方法はないでしょうか?

2: ペーストで <b0> が入ってしまうと、それ以降、すべての入力が文字として扱われてしまい編集ができなくなります。esc や ctrl-c で抜け出ることもできません。この状況でノーマルモードに戻るにはどうしたらいいでしょうか?

環境:
Mac high siera
Vim 8.1 (ターミナル版, not MacVim。homebrew でインスコ)

関連する設定
set clipboard=unnamed

再現方法:
chrome で開いたウェッブページの適当な文字をコピーして cmd+v でペースト。
すべてのケースで <b0> が混入する訳じゃないんですが稀に発生します。その場合は同じ箇所をコピーするとペースト時に必ず再現します。

解決するために調べたこと(試行):
1: register * が変更されたタイミングを検知して不要な文字を削除できないか。
au TextYankPost で試したけど、変更が検知できませんでした。

2: cmd+v を検知してどうにかできないか。
cmd+v は MacVim GUI版なら <D- で拾えるっぽいのはわかった。でも、ターミナル版では使えない模様。

試行2はまだ充分に試してはいないので、これから再度試してみます。

10名無しさん@お腹いっぱい。2018/05/19(土) 22:05:49.24
vim7だけどプラグインはpathogenとヘルプの日本語化しかしてないな
まだ置換検索テキストオブジェクトしか使えてないがこれだけでも十分便利
骨董品でもそれなりに利用価値はあるんだねぇ

1192018/05/19(土) 22:11:51.48
試行2 の件
MacVim で <D- で Command キーの入力が拾えるのは確認できました。
が、システムでショートカットが設定されているのは拾えないらしく <M-v>, <M-a>, <M-h> は拾えませんでした。
残念。

それと、再現可能なページが見つかりました。
このページの「Setting」のサンプルコード[*1]を、1行目 let g:nodejs... &#12316; 4行目の } のところまでをコピー(cmd+v)して、terminal版の vim に cmd+v で貼り付けると末尾に <b0> が付与されてその後操作不能なになります。
https://github.com/myhere/vim-nodejs-complete#settings

*1 ↓この部分
> let g:nodejs_complete_config = {
> \ 'js_compl_fn': 'jscomplete#CompleteJS',
> \ 'max_node_compl_len': 15
> \}


ただし、現象はterminal版では再現しますが、GUI版(MacVim)では再現しません。

わかりにくかったらすみません。

環境情報(追加):
MacVim: 8.0 (2016 Sep 12, compiled Apr 17 2018 10:25:37)
vim: 8.1 (2018 May 17, compiled May 18 2018 13:18:41)

1292018/05/19(土) 22:23:41.72
> <M-v>, <M-a>, <M-h>
<D-v>, <D-a>, <D-h>の間違いです

> 1行目 let g:nodejs... &#12316; 4行目の }
波線が数値文字参照になってしまいました

1392018/05/19(土) 22:35:04.71
連投すみません。

neovim でも再現しないですね。

14名無しさん@お腹いっぱい。2018/05/20(日) 00:22:59.79
vimの貼り付けはpだと思ってた
vimを初期化しても起きるのか
MacVimでも起きるのか
別のブラウザでも起きるのか
一旦テキストエディタを経由しても起きるのか

15名無しさん@お腹いっぱい。2018/05/20(日) 01:47:45.89
>>9
普通のSierra + Terminal + Vim 8.1 (Homevrew) で Chrome からコード4行コピーしてみたけどゴミ文字も入らないし、普通に編集続けられるな

他のブラウザからのコピー、vimの類じゃない他のエディタへのペースト時はどうなの

Cmd-V でターミナルにペーストしたときはどうだろう
$ echo “<Cmd-V>” | hexdump -C とかでゴミが見えないか

<b0>が何のコードかしらないけど、実際の特殊文字のコードなのか、表示がバグって結果とし<b0>と表示されるのか
もし実際にあるコードなら ~/.vim 以下で
$ ag “<b0>”
とかで <b0> を何かゴニョゴニョやってるプラグインが見つからないかな

1692018/05/20(日) 05:57:48.73
>14
ご指摘ありがとうございます。
チェックしました。

> vimを初期化しても起きるのか
起きなかった。

> MacVimでも起きるのか
起きなかった。

> 別のブラウザでも起きるのか
再現する。
Safari, Firefox からペーストしても発生した。

> 一旦テキストエディタを経由しても起きるのか
発生する
Mac に標準で入っている Notes を経由しましたが発生しました。

1792018/05/20(日) 06:01:07.39
>>14
確認ありがとうございます。

> 他のブラウザからのコピー、vimの類じゃない他のエディタへのペースト時はどうなの
他だと発生したことはないですね。

> Cmd-V でターミナルにペーストしたときはどうだろう
> $ echo “<Cmd-V>” | hexdump -C とかでゴミが見えないか
普通のターミナルだったり、 :term した時は発生しないですね。

> <b0>が何のコードかしらないけど、実際の特殊文字のコードなのか、表示がバグって結果とし<b0>と表示されるのか
> もし実際にあるコードなら ~/.vim 以下で
> $ ag “<b0>”
> とかで <b0> を何かゴニョゴニョやってるプラグインが見つからないかな
ありませんでした。

1892018/05/20(日) 06:11:20.60
原因がわかりました。
showmatch オプションを設定していると現象が発生しますね。

> :set showmatch

vim のソース を見て見たけど、残念ながら私には原因が追求できなさそうです。
たぶんここですよね。
https://github.com/vim/vim/blob/master/src/search.c#L2608

19名無しさん@お腹いっぱい。2018/05/20(日) 06:37:57.99
ソースからコンパイルした vim だと再現しないっぽいですね。
もしかしたら brew 経由の vim 固有の現象かもです。

トライしたコンパイル手順:
> cd /tmp
> git clone git@github.com:vim/vim.git
> cd vim
> make
> ./src/vim

ちなみに vim をデバッグする時に使えるログ出力関数ってあるのかな?

こんな感じの。。。
> #include "logging"
> void foo() { log->debug("xxx"); }

※問題は解決したので名前を外しました

20152018/05/20(日) 06:39:02.68
>>18
自分の.vimrcもset showmatchあるな

21名無しさん@お腹いっぱい。2018/05/20(日) 06:41:00.56
>>19
これはどの問題だ??

22名無しさん@お腹いっぱい。2018/05/20(日) 06:44:17.30
>>21

>>9 です。

23名無しさん@お腹いっぱい。2018/05/20(日) 19:43:19.57
Vimのterminalにエスケープシーケンスを通したいんだけど、どうすればいいでしょうか。
例えばTmuxだと\<Esc>Ptmux;\<Esc><ES>\<Esc>\\とやれば元の端末に<ES>が渡りますが、
Vimのterminalで同じことをしたいです。

24名無しさん@お腹いっぱい。2018/05/21(月) 19:34:09.43
Vimでさぁ シェルみたいに/usr/share/vim81とかいうディレクトリを補完できる方法ない?
なるべく簡単な方法がいいんだけども。

25名無しさん@お腹いっぱい。2018/05/21(月) 19:39:38.15
>>24
標準の機能なら
:help i_CTRL-X_CTRL-F

この辺を補助する補完プラグインも結構あると思う

26名無しさん@お腹いっぱい。2018/05/21(月) 20:08:54.27
emacsのhelmみたいなのはないの?

27名無しさん@お腹いっぱい。2018/05/21(月) 20:11:50.76
>>25
まさにそれ!
プラグインでそういうのもありそうだなとは思ってたけど、なるべく汎用性を求めてたから助かった。
ありがとうございます。

28名無しさん@お腹いっぱい。2018/05/22(火) 02:34:10.13
知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

BWWBI

29名無しさん@お腹いっぱい。2018/05/22(火) 10:24:27.23
>>25
もっと早く教えてくれよ

30名無しさん@お腹いっぱい。2018/05/22(火) 13:14:53.19
>>23
これ分かる方いらっしゃいますか。

31名無しさん@お腹いっぱい。2018/05/22(火) 16:59:01.03
5分後に回答してくれたのにもっと早く教えろというクソがわいてると聞いて

32名無しさん@お腹いっぱい。2018/05/22(火) 18:21:54.63
いやそれは、、

33名無しさん@お腹いっぱい。2018/05/22(火) 18:30:38.72
わろた

34名無しさん@お腹いっぱい。2018/05/23(水) 13:00:12.89
>>31 >>24-25の問答は>>23の解決になんにも寄与してねーよ

35名無しさん@お腹いっぱい。2018/05/23(水) 14:48:40.04
>>34
内容までは見てなかったわ
「もっと早く教えてくれよ」ってことは本人は解決したと思ったんだろ
ならその返しはないんじゃないのって話
「解決策になってねーよ」なら妥当

36名無しさん@お腹いっぱい。2018/05/23(水) 14:52:37.76
改めて読み返すと >>24>>27 が同一人物で、 >>29 は別人っぽいな
>>27 はちゃんとお礼言ってる
>>29 はもっと早く知りたかったと言いたかっただけ
何の問題もなかったすまん

37名無しさん@お腹いっぱい。2018/05/23(水) 14:58:19.74
最初見たときは >>29 しかレスついてないように見えたんだ
勘違いすまん

38名無しさん@お腹いっぱい。2018/05/23(水) 22:17:46.72
せやな

39名無しさん@お腹いっぱい。2018/05/24(木) 11:11:47.63
せめてIDだけは欲しいな

40名無しさん@お腹いっぱい。2018/05/25(金) 01:16:10.93
vim Part 6&#169;2ch.net
https://egg.5ch.net/test/read.cgi/software/1421121945/l50
あるじゃん

41名無しさん@お腹いっぱい。2018/05/25(金) 12:16:36.58
<C-g>すると現在のカラムとラインが一時的に強調表示されるようにするマップを教えてください。
nnoremap <C-g> :set cursorline cursorcolumn<CR>
とやると<C-g>を押した後ずーと強調表示されっぱなしになります。

42名無しさん@お腹いっぱい。2018/05/25(金) 13:48:20.49
>>41
nnoremap <C-g> :set cursorline cursorcolumn<CR>
autocmd CursorMoved * if &cursorline + &cursorcolumn > 0 | set nocursorline nocursorcolumn | endif
autocmd InsertEnter * if &cursorline + &cursorcolumn > 0 | set nocursorline nocursorcolumn | endif

カーソル移動したときと挿入モードに遷移したとき無効化
if 文を入れてあるのは、移動時に毎回 set nocursorline nocursorcolumn すると遅くなるから

43412018/05/25(金) 17:55:36.37
>>42
ありがとうございます。望み通りです!

44名無しさん@お腹いっぱい。2018/05/25(金) 18:03:08.87
>>42
autocmd のイベントってカンマ区切で複数書けたんだった
まとめて1行でおk

autocmd CursorMoved,InsertEnter * if &cursorline + &cursorcolumn > 0 | set nocursorline nocursorcolumn | endif

45412018/05/25(金) 19:15:10.75
>>44
重ねて感謝します。
ところで再現する条件を精査するまでもない些事なのですが、
最後のendifだけシンタックスハイライトされなくないですか?
ほんとにどうでもいいことですが……。

46名無しさん@お腹いっぱい。2018/05/25(金) 21:13:49.20
:versionの出力をフィルタリングする良い方法ある?
具体的にはさ
:versionで出力される“Compiled by XXX”のXXXの値によって場合分けする処理をvimrcに書きたい。

47名無しさん@お腹いっぱい。2018/05/25(金) 22:35:25.45
>>46
redir => でコマンドの出力を変数に代入
あとは正規表現で如何様にでも

let version_string = ""
redir => version_string
silent version
redir end

let compiled_by = matchlist(version_string, '\nCompiled by \([^\n]\+\)')
echo get(compiled_by, 1, "Unknown")

48名無しさん@お腹いっぱい。2018/05/27(日) 02:57:10.22
Neovim(0.3.0-dev)でambiwidth=singleにして欧文のアクセント記号を含むファイルを表示すると、表示が乱れませんか?
Vim8では問題ない。

49名無しさん@お腹いっぱい。2018/05/30(水) 10:10:41.47
windows版のgvimだとaltキーの組み合わせで特殊な文字を打てたりしたけど
windows版以外で同じようにできませんか?

例えば alt+\ でUの上に点々が付いた文字
alt+shift+\ だと小文字uの上に点々の文字
こういうのできませんか?

50名無しさん@お腹いっぱい。2018/05/30(水) 15:49:50.33
VimINFOファイルって変数を指定できないんですかね。
let MYVIMINFO = /some/file
set viminfo='2000,<2000,s2000,h,nMYVIMINFO
とするとカレントディレクトリにMYVIMINFOという名前のファイルができてしまいます。
環境変数にすればいいのですが、できれば無用な環境変数は作りたくありません。

51名無しさん@お腹いっぱい。2018/05/30(水) 19:06:03.20
>>50
call exec(“set viminfo='2000,<2000,s2000,h,n” . MYVIMINFO)
とかすればいいんじゃなイカ

52名無しさん@お腹いっぱい。2018/05/30(水) 19:21:03.82
>>51
おお! ありがとうございます。思った通りの挙動になりました!

53名無しさん@お腹いっぱい。2018/05/30(水) 20:57:54.14
>>8
> 既定のプラグイン以外
ってどういう事?

54名無しさん@お腹いっぱい。2018/05/30(水) 22:02:37.70
もともとのプラグインてゆうことじゃないかなあ

55名無しさん@お腹いっぱい。2018/05/31(木) 05:29:10.91
>>53
Netwmとかzipとかじゃない?
あれはもともと組込まれてるプラグインでしょ。

56名無しさん@お腹いっぱい。2018/06/01(金) 05:38:48.85
$VIM や $VIMRUNTIME が環境変数として引き継がれるする利点てなんだろ。
vim から場所やバージョンの違う vim を実行するときミスマッチが起きて思ったんだけど、
シェル変数(not環境変数)みたいに実行中のvimのみ参照するようには出来ないんだろうか。

57名無しさん@お腹いっぱい。2018/06/01(金) 11:04:24.40
Vimが起動する前に$VIMが設定できない仕様だと
ユーザーが好きな起動ディレクトリを設定できないからじゃないの?

58562018/06/01(金) 18:20:10.17
まあ、そうだよね。普通に使えばそれでいいよね。。
ラッパー間に入れる事にしまっする

59名無しさん@お腹いっぱい。2018/06/01(金) 21:38:32.72
>>58
一応聞くけど何がしたいの?

60名無しさん@お腹いっぱい。2018/06/02(土) 00:39:22.37
NyaoVimってまだ続いてるの?

61名無しさん@お腹いっぱい。2018/06/04(月) 23:22:22.60
>>59
特にナニがしたい訳ではなく、
vimから他のバージョンのvimを起動し$VIM,$VIMRUNTIMEが混ぜこぜになっただけですー

62名無しさん@お腹いっぱい。2018/06/12(火) 02:33:52.51
Vimのシェルスクリプトのシンタックスハイライトで
headはハイライトされないのにtailはハイライトされるんだけどどういうこと?
カラースキームやバージョンの問題ではないと思う。

63名無しさん@お腹いっぱい。2018/06/12(火) 13:49:41.42
>>62
syntax/sh.vim を参照

64名無しさん@お腹いっぱい。2018/06/14(木) 01:37:41.20
vimはケータイでコーディングするときとsshでcui環境のときしか使ってない
今時コーディングする時ってみんなIDE使ってるんだよね?
あと、neovim の補完とかデバッグ機能ってIDEと比べてどうなの?

65名無しさん@お腹いっぱい。2018/06/14(木) 14:00:41.15
Vimで数字を増減するとき「2018-06-14」の14が負数として認識されるんだけど
これを正規表現かなにかを使って「YYYY-MM-DDの形式のときは正数として認識する」みたいなことって可能?
help CTRL-Aから始まる数字の増減に関するヘルプも見たけど有益な情報は得られなかった。
案としてはCTRL-Aを一旦ある関数を呼び出すトリガキーとしてマップして
その関数内でカーソル下の数字の判定を行うみたいなことをできればいい
という当たり前のことしか思い付かない。
どなたかおねがいします。

66名無しさん@お腹いっぱい。2018/06/14(木) 14:15:15.60
>>65
YYYY-MM-DD形式に限るならこれが使えそうじゃない?
https://www.vim.org/scripts/script.php?script_id=2120

67名無しさん@お腹いっぱい。2018/06/14(木) 17:08:02.19
-削除か別の文字に置換してカウントアップしたらまた-付ければええやん

68名無しさん@お腹いっぱい。2018/06/14(木) 18:59:07.48
増やしたいなら、CTRL-x
減らしたいなら、CTRL-a
するだけwww

69名無しさん@お腹いっぱい。2018/06/14(木) 20:26:44.23
>68
その発想はなかった

70名無しさん@お腹いっぱい。2018/06/15(金) 03:02:14.57
ええ…

71名無しさん@お腹いっぱい。2018/06/17(日) 20:39:22.64
ロートル専用だと思ってたけど案外置換と検索だけでもなんとかなるもんだな
テキストオブジェクトと矩形編集が中々いいわ
変態バインドを覚える気はないし秘伝のタレを拵える気もないが

72名無しさん@お腹いっぱい。2018/06/18(月) 20:38:33.87
よくもまあそんな嫌味な書き方ができること。

73名無しさん@お腹いっぱい。2018/06/19(火) 04:04:25.76
まったくですわね奥様

74名無しさん@お腹いっぱい。2018/06/19(火) 04:38:29.26
お前らは初めてvimに触れた時文句の一つもなかったの?俺と違って立派なもんだな

75名無しさん@お腹いっぱい。2018/06/19(火) 06:08:16.54
最初が vi だったから…

76名無しさん@お腹いっぱい。2018/06/19(火) 06:47:53.88
vimについて意見するとvimはviより高性能なんだから文句は贅沢だのなんだのって流れ

77名無しさん@お腹いっぱい。2018/06/19(火) 09:24:31.41
オライリーの電子書籍のみでリリースされてるvi&Vimデスクトップリファレンス第2版はオライリーの入門vi第6版よりも詳しくVimについて書かれてありますか?

78名無しさん@お腹いっぱい。2018/06/20(水) 02:03:40.72
Vimのコマンドライン履歴(シェルの履歴ではなくて)で
パスを必ず絶対パスで保存する機能とかありますか?
例えば
:pwd
/home/alice/work
:tabedit ../.bashrc
とした場合に履歴が
pwd
tabedit /home/alice/.bashrc
となるようにしたいということです。

よろしくおねがいします。

79名無しさん@お腹いっぱい。2018/06/20(水) 06:15:31.99
$HOMEとか環境変数利用するのは?

80名無しさん@お腹いっぱい。2018/06/20(水) 12:31:44.46
>>79
返信感謝です。
もう少し詳しくおねがいできないでしょうか。

新着レスの表示
レスを投稿する