vim Part 6©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>618
view + <ファイル名>
view にパスが通ってなかったら vim -R ノーマルモードで、
viWU
の後に、カーソルを最初に v を入力する時にいた位置に戻したいのたが、
関数やプラグインを使わずキーストロークのみで実現するには
マーク機能を使うしかないかな?
<c-o> を入力したら変なところ飛んじゃった。
viWU はジャンプリストには登録されないみたい。 >>620
語頭じゃないところで単語を大文字変換して、カーソル位置が動くからそれを元に戻したい、で良いですかね。
maviWUとやって'aしてみましたが駄目でしたよ。 >620
viWU``
こういうことをしたい感じ?
マーク機能を使っているけど自動でマークされた場所に戻るだけだからセーフということで 二人ともありがと。
>>621
> 語頭じゃないところで単語を大文字変換して、カーソル位置が動くからそれを元に戻したい、で良いですかね。
そう。
何でだろうな、俺の環境だと >>621 は意図通り成功して、
むしろ >>622 が機能しないんだが。
ただし、>>261 はシングルクォートを使ってるから
バッククォートに変えたけどね。
できればマークを上書きしたくなかったんだが、
それしかキーストロークで実現できなきゃ潔く諦めるよ。 あっ、再試験してみたらやっぱり手動でマークしないとダメだった……。なんだろ、無意識にm`しちゃってたのか?
改めて、 m`viWU`` ならたぶん意図通りになるんじゃないかなと。m`はジャンプリストを更新しているので最後の``はC-oでもいけるよ
:h jumplistにも載ってるからたぶん由緒正しい方法 >>624
意図通りになった。
が、ヘルプを読んでも previous context mark の意味がよく分からん。
普通のマーク (m[a-z] m[A-Z]) とは違うの? 日本語ヘルプだと「直前位置マーク」ってなっていて、これはとてもいい名付け方だと思う
/とかggとかGとかでカーソルがどこかへジャンプする時にジャンプ前の位置が自動でマークされる
m`は手動でそのマークを更新しているわけね
maとかして`aと違うのはカーソルジャンプが発生すると自動で上書きされるマークだから、一時的に使うだけなら後腐れがないというのが1点
それとC-oで戻れないって>620にあったので戻れるようにできないか調べた結果というのがもう1点 >>626
なるほど、そういう機能なのか。
(日本語もちゃんと意味を理解して訳してるんだね)
理解できたよ。
ありがと。 >>601
ノーマルモードで2つのキーq: 連続押しするとexコマンド履歴が表示されるので
それ選択してクリップボードへ。
また :dis ってexモードで入力すると "で始まる各レジスタが表示される。
もしかしたら編集中のファイル名などコピペしたいのがあるかもしれない。 cygwin の vim と kaoriya の gvim を併用しています
nerdtree において、259 文字以上のパスの場合、
cygwin の vim はそのファイルが表示されます
kaoriya の gvim はそのファイルが表示されません
後者の nerdtree において max_path を超えるパスを扱える方法はあるでしょうか
プラグインと設定ファイルはどちらも同じものを読み込んでます
kaoriya 付属の設定が原因かもですが、特定方法が分かりません netrw も同じ症状でした
kaoriya は内部でwin32 api の制限を受けてるってことなんでしょうかね >>630
Kaoriya版はVisualC++でコンパイルしたネイティブのWindowsアプリなので
Windowsの制限をモロに受けると思う cygwin もネイティブのWindowsアプリなのでWindowsの制限を受けるのは同じ >>632
うーんじゃあファイル名の長さ制限は別の要因によるのかなあ
まあ自分もかつて両方使って環境変数の競合によるトラブルに悩まされた経験があるので
そもそもCygwinのVimとKaoriyaのVimは併用すべきでないと思う Win32 APIは特別な対策をしなければMAX_PATH文字までしか使えない。
Cygwinはその特別な対策をしているが、Win32版は何もしていない。 linuxなら使わんけど
windowsなら普通に使う Gvimがダメなんじゃなくて
Gvimがダメとか言ってる人たちがダメなんでしょ
弘法筆を選ばず
Windowsのメモ帳だってコードは書ける 挿入モードでカーソルを行末に持って行くのに、C-o $でやっているのですが他に方法って有りましたっけ。 >>643
それって入力中の文字列の最後に行くだけじゃないっけ 様々なご意見ありがとうございます。
MacbookなのでEndがないのと、ホームポジションからなるべくキーを離したくないのです。
今まではESC AまたはC-[ Aだったのですが、最近ようやくC-o $を知りました。
どのみち2ストロークだよなあ、と思って質問してみました。
vimrc弄ってマッピングするのは盲点でした。検討してみます。 >>645
嘘でした。ちゃんと行末に飛びます
ごめんなさい >>649
ホームポジションから離れるので遠慮しておきます。ありがとうございます。 >>652
バランスチェアで仕事しているため、足が床に着かないのでそれは無理です。 vim を使用しているとき矢印キーを不能にしたくて、
試しに :noremap! <Up> <Nop> としましたが、
インサートモードでおかしな挙動をします。
1つ上の行に1文字 A が挿入されます。
不可解です、これはどう言うことでしょうか?
コマンドラインモードでは問題なく意図通りになっています。
ちなみに、:noremap! <Del> <Nop> もインサートモードでの挙動が変です。
こちらはカーソルのすぐ左の1文字の大小が入れ替わり、
かつノーマルモードへ戻ってしまいます。
:noremap! <BS> <Nop> はインサートモードでも意図通りになりました。 >>654
ごめんなさい。
あせって質問する前に落ち着いてしっかりリサーチすべきでした。
互換モードが絡んでいたのですね。
解決しました。 >>655
ごめんなさい、嘘をついていました。
まだ解決されていません。
矢印キーや Delete キーなどの挙動の仕組みは理解できました(つもり)。
そこで、set nocompatible を .vimrc に既述しましたが、症状は変わりません。
そもそも .vimrc が存在する時点で、デフォルトで nocompatible on のはずです。
仮想端末の方が悪いのかと、数種類試してみましたが、どの場合も同じ症状です。
vim のコンパイルオプションが関係しているのかと、vim --version で確認しましたが、
vi互換性やキーコードに関係していそうなオプションは見あたりませんでした。
もともと、矢印キーなどへ伸びる手を矯正しようと Nop に設定したので、
意図しない挙動であっても実質的には問題ないのですが、
やはり理由、原因は気になります。
vi互換性を切っても出るこの症状は何が原因なのでしょうか。 話がそれますが
Git for Windows も 260 を超えるパスは扱えませんでした
cygwin の git は扱えました 新しいNightly入れたがDirectWrite爆速やん
Windows10になって以来GDIではフレーム落ちが鬱陶しかったが
DWではそれが無い分、快適に感じるわ 2つのウィンドウへ開いていて、どちらにも行番号が表示されている状態です。
このとき、片方のウィンドウで :setlocal nonumber とすると、
そのウィンドウの行番号だけが非表示になります。
しかし、:setlocal ninumber ではなく :set nonumber としても
そのウィンドウの行番号だけが非表示になります。
number だけでなく、他のものでも同様です。
例えば wrap でも :set と :setlocal が同じ結果になります。
:set と :setlocal の違いは何でしょうか? その後 :new すると、、
:h local-options Laguage server protocol との連携は進んでいますか? >>660
ありがとうございます。
要するに、:set がすぐさま反映させるのはカレントに対してだけなのですね。
だからぱっと見では :setlocal との違いが分からなかった。
しかし両者の違いは新しくウィンドウやバッファを作った時に現れる。
なぜなら、それらは先ずはグローバルオプションで初期化されるから。
おかげさまで理解できました。 windows10でgvimにdein.vimを導入してプラグインの管理をしようと考えています。
readmeと個人ブログの記事を参考にgithubのリポジトリからcloneし、_gvimrcにもあれこれ書きました。
call dein#install() を実行し、インストールが完了しました。
この時点で各プラグインの機能が使用できるようになりました。
しかし一度gvimを再起動するとそれらが使えなくなっていました。
あれこれ試した結果、call dein#update()を実行すれば使用できるようになることがわかりました。
試しにgvimrcにcall dein#update()を記述し、起動時にアップデートをかけるようにしてみましたが、思った通りにはなりませんでした。
起動直後からプラグインを使用できる状態にすることはできないものでしょうか?
できるなら、どうしたら良いでしょうか >>664
どうやって自己解決したのか書いておくと、良い技術者になれるよ >>665
なんでここにわざわざ書くと良い技術者になれるのでしょうか? Laguage server protocol との連携は進んでいないのですか? 「:view ファイルパス」とすればリードオンリーモードでそのファイルを開きますが、
バッファの内容を編集することはできます。
これをバッファの内容すら編集できなくする方法はありますか?
つまり閲覧やヤンクへのコピーなど、非破壊の操作しかできないようにしたいです。 >>671
-M のヘルプを見ることで、modifireble オプションを off にすれば良いことが分かりました。
試したら、意図通りの状態になりました。
ありがとうございました。 :behave mswin
とすると結構普通のエディタのように使えるね
Windows10 vim 8.0 gVimで試した限りだが、
ノーマルモード、インサートモード問わず、Shift+矢印キーで文字列選択や
Ctrl+Ins、Shift+Insでコビー貼り付けができる
ただし、Ctrl+C、Shift+Vはできなかった
貼り付けもインサートモードで何も選択していない状態だと問題ないが
何か選択した状態だと思わぬ所に貼り付けされてしまう
ノーマルモードだと何も選択していなくても同様の事象
でも使えそうだ >>673
VimがVimのキーアサインでない時点で使えないと思うのだが >>673
Creamは?Vim使う意味なくなるけどね。 source $VIMRUNTIME/mswin.vim
も入れたら、Ctrl+C, Ctrl+Vも使えたよ。貼り付けも問題なかった
これなら使いやすいし、ノーマルモードもあるからVimらしさもあるね
gVim Easyはインサートモードしかないようだが
Creamはノーマルモードも使えるみたいだね
でもノーマルだと選択の開始はShit+矢印キーではなくなるのかな
ちょっと試してみよう gx でURL を開くとき、?以降のパラメータが含まれないようです
?以降のパラメータを含めるような設定はありますか? netrwの話?
:set isfname+=63 "( '?' の10進表記 = 63)
でもグローバルなんだなこのオプション
viWgx とでもして開くほうがいいかもしらん vim 標準搭載のパッケージ管理について質問です。
.vim/pack 下にプラグインを置くことでそのプラグインを使えるようになりますが、
そのプラグインのドキュメントが読み込まれません。
たとえば、vim-surround というプラグインを .vim/pack/pack1/start/vim-surround に置くと、
vim を起動させるだけで surround プラグインが機能します。
しかし、:h surround コマンドを入力してもエラーになりヘルプが見れません。
.vim/pack/pack1/start/vim-surround/doc/surround.txt が存在するのにです。
pathogen を使っていた時は、.vim/bundle にプラグインを置けば、そのドキュメントも利用できたのですが。
標準搭載のパッケージ管理ではドキュメントまでは面倒を見てくれないのでしょうか。 :helptags /path/to/surround.txt やったらいけるとか? 久々にいいオプションを見つけた
set isfname-==
'=' をファイル名の一部として認識させない
これによって設定ファイルの中の
option=/path/to/file
のような局面で <C-x><C-f> 補完を使っていける >>680
:helptags .vim/pack/pack1/start/vim-surround
としてみましたが、ダメでした。
(surround.txt を引数に入れると、ディレクトリではないと怒られるので )
:set runtimeoath? とすると、そこには
.vim/pack/pack1/start/vim-surround
も含まれてるのですが... raspbianにインストールされている標準のvimを使うとC言語など拡張子に合わせてインデントや色分けするので便利でした。
Ubuntuでも同じようにしたいのですが、個別に機能をインスールのではなく補完機能を込み込みにしたvimのパッケージなどってあるんでしょうか?
あとRaspbianのvimはそれ用にカスタマイズされたものなんでしょうか? >>684
色んなプラグインとか設定とかが元々入ってる Vim のディストリはいくつかあるよ
spf13, Janus, SpaceVim あたりが有名どころだろうか
イチから自分で探すの面倒ならこういうのもアリなのかもしらん >>685
そうなんですね、疑問がスッキリしました。
オススメされたディストリを入れてみます。
ありがとう。 Cのシンタックスハイライトやインデントくらいなら公式のVimに付いてくるはず
UbuntuにデフォルトインストールされているVimはtiny版だと思うから、huge版をインストールし直してやればいい。正確なパッケージ名までは知らんが公式リポにあるはず Ubuntu使っているならvim-gtk3を入れとけばいいんじゃないかと思う gtk3(huge)を入れたんだけど自動インデントされません。
tiny消したりしても変化なし、ハイライトはされてます。 >>690
.vimrcにset cindentって書けば有効化できる
動作とか詳しくはググって >>691
cindentオプションはC言語のインデントプラグインで自動的に有効化(バッファローカル)されるので、普通は手動で :set することはない
>>690
vimrcを作成済みなら、その末尾に
filetype plugin indent on
の一行を追加して、いったんVimを終了してからC言語ファイルの編集を始めてみて >>692
Cでインデント効きました。
嬉しい!ありがとうございます。 patch ファイルを開いている場合に、下記例でいうと src/foo.c にジャンプしたいです
単に gf とすると "a/" もパスの一部と解釈されてしまいジャンプできません
diff --git a/src/foo.c b/src/foo.c
今は泥臭いですが a にカーソルを持っていき xx <C-w> f で開いています
(単に xxgf だとバッファが保存されていなくて開けない)
isfname あたりで "a/" を無視するような設定や、
もう少し短いキーストロークで実現する方法はあるでしょうか vim右下の行列表示で 7,105-71となっているとき
右の71は半角1,全角2として
左の105は半角1、全角3として計算しているようです。
UTF8なら左、Shift_JISなら右の数字を見ると1行のデータ量が分かるいいということであってますか? 香り屋さんのを仕事で使ってるんだけど
ctrl-;はやっぱ割り当てられないよね
[キーが遠くて小指が痛いのんだけど、どのキーで妥協すべき? >>698
英語配列だとキーひとつ分左なんだよね、[って。 >>699
タブ入力する時に使うから割当て変えるの凄いと思った >>701
タブ入力はC-v,Tabかな。あんま使わないから
基本プログラミングとかしない。メモ帳と小遣い帳 linux で vim を使っています。
今、6行目の4列目にカーソルがあるとして、
2行目から4行目の範囲の文字列を外部コマンドに標準入力を通して送り、
コマンド処理において標準出力に出力された文字列をカーソルの位置に挿入したいです。
コマンドラインモードで
:2,4! コマンド
とすると、2行目から4行目が消され、2行目にコマンドが出力した文字列が挿入されます。
そうではなく、カーソルの位置に挿入したいのですが、可能でしょうか。 >695
遅レスですが、まんまやりたいことができました
ありがとうございました
ただ、当たり前ですが path から探すので
自分のフォルダ構成だと patch ファイルと同じディレクトリに遷移する必要がありました
そこで下記のマップをして改良してます
nnoremap ,gf :cd %:h<CR>:call gf#user#do("gf", "n")<CR> 一文字ずつ間にデリミタを入れるように置換したい。
[例]
1749064 --> 1,7,4,9,0,6,4
正規表現を使って一発で置換できるだろうか?
:s/\v(\d)(\d)/\1,\2/g
これを2回適用すればできたけど、なんか不様。 >>705
先読みで
:s/..\@=/&,/g
vimの先読みは \@= と書き、その直前の正規表現(この場合二つめの .)がその場所で一致するかどうかを見る
ちなみに & は一致した文字列全体 >>705
試してないけどこれでもいけるかも
s/\d\ze\d/&,/g vimの先読み後読みって覚えづらいのよね……
おれ先に(?=)とかで覚えちゃったから余計に >>706 >>707 でできました。
ありがとうございました。
先読みなどという仕組みがあるのですね。
興味深いので調べてみます。 ryanoasis/vim-deviconsを入れるとscrooloose/NERDTreeの表示がおかしくなります。
画像のfolderの中にfolder1〜5とfile1〜5が入っているんですが、ファイルだけがなぜか4マス分右にインデントされてしまいます。
vim-deviconsのオプションでフォルダにもアイコンを付ける設定をすると、フォルダも4マス分右にずれるので、ファイルと並びがそろうんですが、左のスペースが気になります。
左に詰めるにはどういう設定をしたらよいですか?
iTrem2でフォントはCicaフォントを使っています。
https://i.imgur.com/Ru8H3M7.jpg
https://i.imgur.com/GQUhbpO.jpg 自己レス
Xuyuanp/nerdtree-git-plugin
これの影響でした 正規表現にも方言があるから面倒だよな
grepのman見るまで基本や拡張があるなんて知らんかったし
vimの置換に手を焼いてたら原因がエスケープの有無とかほんと 指定した正規表現の量指定子やエスケープ、クラス、グループなんかをそれぞれ色分けして表示してくれるといいのにね。
そうすれば、エスケープし忘れている文字とかも一発で視認できる。 編集が済んでファイルを :bd で 閉じているのですが、
この時にtabは閉じないようにできないでしょうか?
tab 毎に カレントディレクトリを変えているのでやや困っています。 >>718
https://thinca.hatenablog.com/entry/20111204/1322932585
" タブページを常に表示
set showtabline=2
" gVimでもテキストベースのタブページを使う
set guioptions-=e
後:bdだと:ls!では表示されるから俺は:bw使ってる ■ このスレッドは過去ログ倉庫に格納されています