主にWindows環境でのVimについてのスレッドです。
本家: http://www.vim.org/
Windows版バイナリ配布: http://www.kaoriya.net/
vim-jp: http://vim-jp.org/
VimWiki: http://vimwiki.net/
ctags 日本語対応版: http://hp.vector.co.jp/authors/VA025040/
名無しのVIM使い(スクリプト) http://nanasi.jp
spanish passion Linux(全オプション) http://www15.ocn.ne.jp/~tusr/
ずんWiki http://www.kawaz.jp/pukiwiki/?vim
関連リンク
UNIX板 Vim Part22: http://peace.2ch.net/test/read.cgi/unix/1365071542/
MacVim 再び: http://anago.2ch.net/test/read.cgi/mac/1133534694/
前スレ vim Part 5: http://anago.2ch.net/test/read.cgi/software/1379912425/
探検
vim Part 6©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2015/01/13(火) 13:05:45.21ID:JwnBl2Yv0
2017/03/16(木) 20:49:36.84ID:94znjjG40
2017/03/20(月) 02:18:34.57ID:/z2o1nVN0
カラーをmolokaiに変えてはみたけど色がついたのは2、3色で後は白文字のまま
中身はJavaScriptのコードなんだけど、カラースキーマってこんなもん?
何かキャプチャと大分違うからがっかり
中身はJavaScriptのコードなんだけど、カラースキーマってこんなもん?
何かキャプチャと大分違うからがっかり
2017/03/20(月) 05:57:03.99ID:k1g7IWoR0
ターミナルが256色じゃないとか
2017/03/29(水) 00:19:51.47ID:0BE62oCs0
Uniteって使いみちなくね?
2017/03/29(水) 11:19:21.29ID:0BE62oCs0
みなさんGrepは何を使っていますか
2017/03/29(水) 12:45:23.57ID:+DP4IOK70
>>523
Ag
Ag
2017/05/02(火) 23:44:34.46ID:jIFPm4AG0
neovimが気合いの入ったwindowsサポートをやってのけたことで、いよいよ短所はコミュニティにおける情報の少なさのみとなった
526名無しさん@お腹いっぱい。
2017/05/13(土) 21:21:45.77ID:2E1rMkwX0 kaoriya版を使わせて頂いています。
自動インデントが嫌で「$HOME/_vimrc」に下記を記述しても反映されません。
set noautoindent
set nosmartindent
set paste
起動する度に「:set paste」を打ち込んでいる状態です。
どうすれば反映されますか?
自動インデントが嫌で「$HOME/_vimrc」に下記を記述しても反映されません。
set noautoindent
set nosmartindent
set paste
起動する度に「:set paste」を打ち込んでいる状態です。
どうすれば反映されますか?
2017/05/23(火) 16:10:03.81ID:37HFoOJY0
528名無しさん@お腹いっぱい。
2017/05/25(木) 08:58:28.08ID:JOZb7CHM0 >>526
:scriptnames
:scriptnames
2017/06/16(金) 00:38:21.85ID:SspVtuQq0
>>523
rg
rg
2017/06/26(月) 22:19:16.22ID:RjR6oxBL0
複数のファイルパスを引数に指定して vim コマンドを実行しました。
複数のバッファが作られた状態で、バッファ1がビューポートに表示されています。
そして、バッファ1のコンテンツを適当に編集し、その結果をファイルに書き戻さないで、
ノーマルモードで :b2 コマンドを実行しようとしました。
すると、
E37: 最後の変更が保存されていません (! を追加で変更を破棄)
と表示され、バッファを移れません。
Vim は編集したコンテンツをファイルに書き戻さない限り、
別のバッファを同じビューポートに表示させることはできないのでしょうか。
環境 : ArchLinuxのターミナル上での最新Vim
複数のバッファが作られた状態で、バッファ1がビューポートに表示されています。
そして、バッファ1のコンテンツを適当に編集し、その結果をファイルに書き戻さないで、
ノーマルモードで :b2 コマンドを実行しようとしました。
すると、
E37: 最後の変更が保存されていません (! を追加で変更を破棄)
と表示され、バッファを移れません。
Vim は編集したコンテンツをファイルに書き戻さない限り、
別のバッファを同じビューポートに表示させることはできないのでしょうか。
環境 : ArchLinuxのターミナル上での最新Vim
2017/06/26(月) 22:26:11.98ID:6iUHjKrx0
>>530
:se hidden
:se hidden
2017/06/27(火) 06:12:35.14ID:sQcEfG2E0
Vim資格の試験問題かな
533名無しさん@お腹いっぱい。
2017/06/27(火) 07:28:06.73ID:HI/QFqrv0 草
2017/06/27(火) 20:52:53.46ID:r9FMXv0s0
2017/06/28(水) 15:47:37.76ID:f/MV6oUA0
特定のハイライト設定を分岐条件として、vimrcの処理を変えたい。
if文で実現できるでしょうか。
具体的には、hi Cursor gui の値がリバースかノーマルか判断して、IMEハイライト設定を変えたい。
if文で実現できるでしょうか。
具体的には、hi Cursor gui の値がリバースかノーマルか判断して、IMEハイライト設定を変えたい。
2017/06/28(水) 16:25:44.94ID:fxI8ETbS0
IMEハイライト?
highlight CursorIM
であかんの?
highlight CursorIM
であかんの?
2017/06/28(水) 17:26:47.04ID:f/MV6oUA0
CursorIM で設定できるのは調べてわかっています。
カラースキーム側で、hi cursor guiにリバースを設定しているかいないかでcursorIMの設定を変えたいのです。
カラースキーム側で、hi cursor guiにリバースを設定しているかいないかでcursorIMの設定を変えたいのです。
2017/06/28(水) 19:02:28.23ID:wYODjZXt0
hi Cursorの設定はredir使って取るしかないんじゃないかね
2017/06/28(水) 22:38:13.85ID:58qew1+00
カラースキームを変更すると
autocmd ColorScheme
が発生するので
:let i=synIDattr(synIDtrans(hlID("Cursor")), "reverse")
で取得できないかしら?
synIDattr()
hlID()
みてみ
autocmd ColorScheme
が発生するので
:let i=synIDattr(synIDtrans(hlID("Cursor")), "reverse")
で取得できないかしら?
synIDattr()
hlID()
みてみ
2017/06/28(水) 22:45:20.46ID:58qew1+00
もうずっと書いてないから自信ないんだがこんな感じか
augroup ColorSchemePatch
autocmd ColorScheme * call s:MyColorScheme()
augroup END
function! s:MyColorScheme()
if(synIDattr(synIDtrans(hlID("Cursor")), "reverse"))
hl aaaaaaaaa
else
hl bbbbbbbbb
endif
endfunction
augroup ColorSchemePatch
autocmd ColorScheme * call s:MyColorScheme()
augroup END
function! s:MyColorScheme()
if(synIDattr(synIDtrans(hlID("Cursor")), "reverse"))
hl aaaaaaaaa
else
hl bbbbbbbbb
endif
endfunction
2017/06/29(木) 23:54:24.78ID:vCRr5FFk0
2017/06/30(金) 20:18:53.58ID:8S8ZlKEV0
2017/07/03(月) 03:01:22.52ID:VV7MSC1K0
名著『実践Vim』(原題"Practical Vim")のDrew Neilさんも、いまやneovimに傾倒して、
1月に出る新著"Modern Vim"ではneovimのことに紙幅の1/3を割くらしい。
1月に出る新著"Modern Vim"ではneovimのことに紙幅の1/3を割くらしい。
2017/07/03(月) 05:20:48.09ID:NOSShV6j0
ネオVimがオリジナルに較べて優れているところは?
2017/07/03(月) 09:20:01.21ID:nQ3sr8er0
>>544
速い
速い
2017/07/03(月) 13:30:00.01ID:jXDdWTmd0
ようやく先月vim7からvim8にしたのに
2017/07/03(月) 14:09:41.33ID:VNECV20m0
>>544
GUIを捨てる気になる
GUIを捨てる気になる
2017/07/15(土) 11:54:38.52ID:psGrxCEI0
vimの質問です。
カーソルがある行の末尾n文字分(改行コードは含まず)を削除したい場合、
どのようにするのが効率的でしょうか。
(:global コマンドのコマンド節で使いたい)
Pro Vim という本にはノーマルモードのコマンドとして、末尾3文字の削除にに
$3X
が紹介されていましたが、これは違いますよね。
これでは末尾から数えて4文字目から2文字目が削除されてしまいます。
(もしかしたら、書籍では設定ファイルで何か加工してあるのかもしれませんが、
私は勉強中に意味も分からず設定するのは性に合わないのでデフォルトのままです)
バージョン : Vi IMproved 8.0 (適用済みパッチ 1-628)
カーソルがある行の末尾n文字分(改行コードは含まず)を削除したい場合、
どのようにするのが効率的でしょうか。
(:global コマンドのコマンド節で使いたい)
Pro Vim という本にはノーマルモードのコマンドとして、末尾3文字の削除にに
$3X
が紹介されていましたが、これは違いますよね。
これでは末尾から数えて4文字目から2文字目が削除されてしまいます。
(もしかしたら、書籍では設定ファイルで何か加工してあるのかもしれませんが、
私は勉強中に意味も分からず設定するのは性に合わないのでデフォルトのままです)
バージョン : Vi IMproved 8.0 (適用済みパッチ 1-628)
2017/07/15(土) 13:26:53.99ID:psGrxCEI0
2017/07/15(土) 13:57:52.63ID:cM/aD62O0
普通に編集中なら$hhDかなぁ
2017/07/15(土) 20:42:07.39ID:fAnk6ZEb0
例えば末尾3文字なら $v2hd とかどうだろう?
2017/07/15(土) 22:13:44.91ID:psGrxCEI0
2017/07/24(月) 13:12:17.55ID:KR9jNO/A0
Vim で端末機能が動くようになった。https://mattn.kaoriya.net/software/vim/20170724011404.htm
554名無しさん@お腹いっぱい。
2017/07/24(月) 21:43:17.42ID:NWRLG6OS0 いーらないw
2017/07/24(月) 21:45:50.73ID:8/nT5S970
そうなると何が嬉しいの?
2017/07/24(月) 21:50:36.45ID:ThXMFjbk0
Emacsに勝つために
2017/07/24(月) 22:37:34.67ID:ia4KQpgh0
訳のわからんプラグインが減る
2017/07/27(木) 21:36:04.13ID:BH8cTlN30
どうしようも無いことだけど、ウィンドウ関係のverticalの概念になかなか慣れない。
:vert split とか :vertical resize +5 とか。
これ、ウィンドウが並ぶ方向じゃなくて、境界線の方向なんだよね。
:vert split とか :vertical resize +5 とか。
これ、ウィンドウが並ぶ方向じゃなくて、境界線の方向なんだよね。
2017/07/28(金) 02:20:23.95ID:wKT4wg4K0
刃物でぶった斬るイメージで唱えて
2017/07/28(金) 03:07:26.36ID:PotsMINk0
天頂裂断《ヴァーティカル・スプリット》
2017/07/28(金) 05:55:14.85ID:rJgmZEk30
:terminal
2017/07/28(金) 09:07:56.24ID:oZBJkmUM0
tmuxとvimではスプリットの方向が違うのよね
vimに慣れてると、tmuxのスプリットの方が気持ち悪く感じる(´・ω・`)
vimに慣れてると、tmuxのスプリットの方が気持ち悪く感じる(´・ω・`)
2017/07/29(土) 21:40:27.04ID:41jnZkkG0
DirectWrite有効時に描画が重いのって画面更新しきらない内に垂直同期待ちしてるからなんじゃね?
無効時の軽さはフレームスキップしてる分のように見える
無効時の軽さはフレームスキップしてる分のように見える
2017/08/01(火) 15:23:18.50ID:9bAmpScg0
俺達は日常的に1/60秒を超える操作を繰り返していた…のか…?
2017/08/02(水) 05:51:26.51ID:/ESOm91P0
瞬速打鍵《ヴァーティカル・シンク・スプリント》の使い手であったか
2017/08/02(水) 23:15:30.89ID:AN/nKZA20
NodeJSを主に書いているんですが他のファイルを呼び出すパスを書く時に、相対パスを予測変換で表示してくれるプラグインないですか。
2017/08/03(木) 07:19:41.96ID:6bw6edB+0
2017/08/03(木) 08:18:50.31ID:3PohL9bt0
禿げは今関係ないだろ!
2017/08/03(木) 16:22:38.37ID:c8Tc4iwZ0
高知県四万十市の地名・半家の可能性に賭けろ
570名無しさん@お腹いっぱい。
2017/08/13(日) 12:19:33.93ID:PqGSx6uE0 terminalが使えるVimってどこでダウンロードできますか
2017/08/13(日) 12:39:32.92ID:x0zQvx4E0
git
2017/08/13(日) 13:06:16.43ID:kH8yYg6c0
現時点ではコンパイル時に有効にしないとターミナルは使えない
使いたいなら自分でビルドするしかない
使いたいなら自分でビルドするしかない
2017/08/13(日) 21:35:07.02ID:tWHkVCZb0
めんどくさ
2017/08/22(火) 21:49:47.40ID:YAxqLv5N0
ビジュアルモードでのキーストローク a( による括弧の選択について質問です。
ビジュアルモード時、下記の3行のテキストのそれぞれ行頭にカーソルがある状態で
a( をストロークすると、3行目で行った場合のみ結果が他の場合と違います。
(())
(a())
(\())
1行目と2行目では、どちらも外側の括弧とその内部を選択します。
しかし3行目では、最初の開き括弧から1つ目の閉じ括弧までが選択されます。
バックスラッシュが影響しているように思えるのですが、これは仕様でしょうか。
3行目でも他と同じように外側の括弧を選択するにはどうすれば良いでしょうか。
ちなみに、3行目の行頭にカーソルがある時、その括弧に対応する閉じ括弧、
つまり2つ目の閉じ括弧が一時的にハイライトされます (もちろん1つ目の開き括弧も)。
これは望んだ通りの挙動です。
しかし、そこで % をストロークすると、1つ目の閉じ括弧にジャンプします。
これは a( の挙動と同様です。
またこれらの望まない挙動は丸括弧に限りません。
% でジャンプできるペア全てに当てはまります。
ビジュアルモード時、下記の3行のテキストのそれぞれ行頭にカーソルがある状態で
a( をストロークすると、3行目で行った場合のみ結果が他の場合と違います。
(())
(a())
(\())
1行目と2行目では、どちらも外側の括弧とその内部を選択します。
しかし3行目では、最初の開き括弧から1つ目の閉じ括弧までが選択されます。
バックスラッシュが影響しているように思えるのですが、これは仕様でしょうか。
3行目でも他と同じように外側の括弧を選択するにはどうすれば良いでしょうか。
ちなみに、3行目の行頭にカーソルがある時、その括弧に対応する閉じ括弧、
つまり2つ目の閉じ括弧が一時的にハイライトされます (もちろん1つ目の開き括弧も)。
これは望んだ通りの挙動です。
しかし、そこで % をストロークすると、1つ目の閉じ括弧にジャンプします。
これは a( の挙動と同様です。
またこれらの望まない挙動は丸括弧に限りません。
% でジャンプできるペア全てに当てはまります。
575名無しさん@お腹いっぱい。
2017/08/22(火) 23:10:08.20ID:/8ECgwOr0 >ビジュアルモード時、下記の3行のテキストのそれぞれ行頭にカーソルがある状態で
ビジュアルモードで矩形選択してる状態?
aじゃなくてAを押さないと編集できないよ
ビジュアルモードで矩形選択してる状態?
aじゃなくてAを押さないと編集できないよ
576名無しさん@お腹いっぱい。
2017/08/22(火) 23:17:28.40ID:/8ECgwOr0 つうか仕様かどうかを2ちゃんで聞いてる時点で(ry
githubのメイン垢で聞くのが恥ずかしいなら捨て垢でも取得してgithub.com/vim-jp/issues/issuesで聞いてきなよ
githubのメイン垢で聞くのが恥ずかしいなら捨て垢でも取得してgithub.com/vim-jp/issues/issuesで聞いてきなよ
577名無しさん@お腹いっぱい。
2017/08/22(火) 23:26:13.09ID:/8ECgwOr0 syntaxのほうは再現できないけど%の方は再現したから報告してきてね
ここで書き込んでも誰も作業しないよ
ここで書き込んでも誰も作業しないよ
2017/08/23(水) 00:01:06.06ID:HbPzOOof0
>>575
言い方が悪かったです。
1行目の行頭にカーソルを移してビジュアルモードに入り a( をストロークします。
次に、一旦ビジュアルモードを抜けてから今度は2行目の行頭にカーソルを移し、
もう一度ビジュアルモードに入って a( をストロークします。
3行目でも2行目と同様の事を行います。
この時、3行目で行った結果が1行目や2行目で行った結果と違う、という話です。
言い方が悪かったです。
1行目の行頭にカーソルを移してビジュアルモードに入り a( をストロークします。
次に、一旦ビジュアルモードを抜けてから今度は2行目の行頭にカーソルを移し、
もう一度ビジュアルモードに入って a( をストロークします。
3行目でも2行目と同様の事を行います。
この時、3行目で行った結果が1行目や2行目で行った結果と違う、という話です。
579名無しさん@お腹いっぱい。
2017/08/23(水) 00:07:43.61ID:p+wGVSmH0 >1行目の行頭にカーソルを移してビジュアルモードに入り a( をストロークします。
↑の時点でインサートモードにいるのに
↓ではビジュアルモードに入ってたことになる
>次に、一旦ビジュアルモードを抜けてから今度は2行目の行頭にカーソルを移し、
丁寧に説明してください
と言うかここで説明しても僕は作業はしませんよ
↑の時点でインサートモードにいるのに
↓ではビジュアルモードに入ってたことになる
>次に、一旦ビジュアルモードを抜けてから今度は2行目の行頭にカーソルを移し、
丁寧に説明してください
と言うかここで説明しても僕は作業はしませんよ
580名無しさん@お腹いっぱい。
2017/08/23(水) 00:08:44.04ID:p+wGVSmH0 バグの可能性があるならちゃんとvim-jpで報告してください
英語が出来るならvim_useで質問してもいいでしょう
英語が出来るならvim_useで質問してもいいでしょう
581名無しさん@お腹いっぱい。
2017/08/23(水) 00:18:36.31ID:p+wGVSmH0 ああごめんごめんインサートモードは関係なかったわ
酔ってて眠いし頭が回らないわ
酔ってて眠いし頭が回らないわ
2017/08/23(水) 13:48:52.82ID:Am8whGXo0
>>580
分かりました。
分かりました。
2017/08/24(木) 07:44:55.33ID:ozepJtGY0
カーソル位置はそのままで、指定した行番号の行を削除したいです。
たとえば、5行目にいながら20行目を削除する、などです。
:20d は使えません。
なぜなら、削除と同時にカーソルが移動してしまうからです。
(当然、カーソルより前の行を消した結果カーソル位置が1行上に移動するのはOKです)
プラグインを使わずに、デフォルトの機能だけで可能でしょうか。
たとえば、5行目にいながら20行目を削除する、などです。
:20d は使えません。
なぜなら、削除と同時にカーソルが移動してしまうからです。
(当然、カーソルより前の行を消した結果カーソル位置が1行上に移動するのはOKです)
プラグインを使わずに、デフォルトの機能だけで可能でしょうか。
2017/08/24(木) 08:36:29.25ID:DkQEIMAn0
>>583
そのあとC-oじゃ駄目なの?
そのあとC-oじゃ駄目なの?
2017/08/24(木) 10:38:03.45ID:ozepJtGY0
2017/08/24(木) 14:19:20.19ID:mj+Ngkxe0
>>585
C-oとC-i便利よ。後g;
C-oとC-i便利よ。後g;
587名無しさん@お腹いっぱい。
2017/08/28(月) 06:15:07.03ID:u5OnoTLa0 sudoで起動したときに設定を反映させる方法を教えてください。
2017/08/28(月) 06:45:49.71ID:sySKr/iK0
2017/08/29(火) 20:44:34.25ID:SqsQltVx0
>>587
自ユーザで使ってる .vimrc などを /root にもコピーすれば?
自ユーザで使ってる .vimrc などを /root にもコピーすれば?
2017/09/02(土) 21:09:55.29ID:8bAG7ppU0
書籍 Pro Vim に次のようなコマンドが紹介されていました。
(正確には違いますが、質問の本質に無関係な部分は省略、改変しています)
:let c=0 | g/^/let c=c+1 | s/^/\=c/
各行の頭に1から順に番号を挿入するものです。
これは3つの同格なコマンド let、g、s がパイプで繋がっているのではなく、
1つ目のパイプで let と g が繋がっており、2つ目のパイプで繋がった let と s が、
g が実行する一塊のコマンドを構成している、 という認識でよろしいでしょうか。
(正確には違いますが、質問の本質に無関係な部分は省略、改変しています)
:let c=0 | g/^/let c=c+1 | s/^/\=c/
各行の頭に1から順に番号を挿入するものです。
これは3つの同格なコマンド let、g、s がパイプで繋がっているのではなく、
1つ目のパイプで let と g が繋がっており、2つ目のパイプで繋がった let と s が、
g が実行する一塊のコマンドを構成している、 という認識でよろしいでしょうか。
2017/09/02(土) 21:25:16.10ID:wsrUjl/f0
いや、|を区切りに順番に実行してるだけ
2017/09/02(土) 21:39:42.36ID:wsrUjl/f0
…じゃなかった、二つ目の|は :g のコマンド部に含まれることになる(ので、一行ごとに let c=c+1 | s/^/\=c が実行される)
だから多分おっしゃってる通りです
言いたかったのは、シェルでいうパイプみたいな入出力機能は無いよってこと
だから多分おっしゃってる通りです
言いたかったのは、シェルでいうパイプみたいな入出力機能は無いよってこと
2017/09/02(土) 22:28:24.27ID:8bAG7ppU0
2017/10/03(火) 23:14:16.22ID:QcTyHpdE0
3ボタン式フットペダル買おうと思う
左はESCとして、真ん中と右に何を割り当てようか?
左はESCとして、真ん中と右に何を割り当てようか?
2017/10/03(火) 23:19:07.97ID:+ct86dHB0
クラッチとアクセルだよな
2017/10/03(火) 23:26:04.06ID:f4gHys0x0
そもそもそういうのが必要ないのがvimのいいところじゃね
2017/10/04(水) 00:15:47.10ID:cDl6M1KN0
2017/10/04(水) 00:51:15.43ID:vgPnd8+o0
免停
2017/10/04(水) 20:51:51.94ID:KZawJQeu0
>>594
C-z と fg <CR>
C-z と fg <CR>
2017/10/05(木) 02:39:35.11ID:a7le/tir0
>>594
押しっぱなしOKならCTRL
押しっぱなしOKならCTRL
2017/10/12(木) 22:42:02.80ID:YUZLqc8d0
kaoriya の gvim と cygwin の vim を併用しています
kaoriya の gvim において、コマンドラインモードの部分のテキストを
クリップボードにコピーしたいです。何か方法はあるでしょうか?
ちなみに cygwin の vim では、ターミナルの機能だと思うのですが
マウス選択すればクリップボードにコピーされます
また、右クリックでメニューも出ます
ユースケースとしては、ファイルのフルパスを 1 と Ctrl + G で
コマンドライン部分に表示させた後、その文字列をコピペする操作です
kaoriya の gvim において、コマンドラインモードの部分のテキストを
クリップボードにコピーしたいです。何か方法はあるでしょうか?
ちなみに cygwin の vim では、ターミナルの機能だと思うのですが
マウス選択すればクリップボードにコピーされます
また、右クリックでメニューも出ます
ユースケースとしては、ファイルのフルパスを 1 と Ctrl + G で
コマンドライン部分に表示させた後、その文字列をコピペする操作です
2017/10/12(木) 23:19:03.68ID:iq+JUW1U0
>>601
ファイル名をクリップボード(または単にレジスタ)に入れるだけならこれがよさそう
https://blog.trimark.jp/archives/21
いろんなメッセージに対して使いたいならこっちかな
https://superuser.com/a/171105
ファイル名をクリップボード(または単にレジスタ)に入れるだけならこれがよさそう
https://blog.trimark.jp/archives/21
いろんなメッセージに対して使いたいならこっちかな
https://superuser.com/a/171105
2017/10/13(金) 00:10:56.55ID:ncs7N8va0
>602
回答ありがとうございます
どちらも有益な情報でした
nnoremap ,cp :let @*=expand("%:p")<CR>
こんな感じでマップすると、良い感じで使いまわせそうです
あと、2つ目の方は先頭に改行 ^J が入ってしまうようですね
助かりました
回答ありがとうございます
どちらも有益な情報でした
nnoremap ,cp :let @*=expand("%:p")<CR>
こんな感じでマップすると、良い感じで使いまわせそうです
あと、2つ目の方は先頭に改行 ^J が入ってしまうようですね
助かりました
2017/10/13(金) 22:17:18.33ID:wbV6EcdM0
指定した範囲内の特定の文字列を置換したい。
ただし、置換先の文字列は1から順に増加する数字を含むとする。
例えば下記のものを
abcdef
xyzcwv
ocpqr
hijkclcno
xxcx
2行目から4行目までの c を上から順に、また左から順に [1] [2] [3] [4] に置換すると、
abcdef
xyz[1]wv
o[2]pqr
hijk[3]l[4]no
xxcx
となる。
どうすれば良い?
ただし、置換先の文字列は1から順に増加する数字を含むとする。
例えば下記のものを
abcdef
xyzcwv
ocpqr
hijkclcno
xxcx
2行目から4行目までの c を上から順に、また左から順に [1] [2] [3] [4] に置換すると、
abcdef
xyz[1]wv
o[2]pqr
hijk[3]l[4]no
xxcx
となる。
どうすれば良い?
2017/10/13(金) 22:23:38.98ID:sfqciESl0
「ただし、」はどこにかかってるの?
2017/10/13(金) 23:24:02.57ID:psSxC80I0
>>604
コマンド一発でやる方法は思いつかなかったわ
関数作るならもちろんできる
function! AAA() range
let i = a:firstline
let n = 1
for l in getline(i, a:lastline)
let line = l
while match(line, 'c') + 1
if match(line, 'c')
let line = substitute(line, 'c', printf('[%d]', n), '')
let n += 1
endif
endwhile
cal setline(i, line)
let i += 1
endfor
endfunction
コマンド一発でやる方法は思いつかなかったわ
関数作るならもちろんできる
function! AAA() range
let i = a:firstline
let n = 1
for l in getline(i, a:lastline)
let line = l
while match(line, 'c') + 1
if match(line, 'c')
let line = substitute(line, 'c', printf('[%d]', n), '')
let n += 1
endif
endwhile
cal setline(i, line)
let i += 1
endfor
endfunction
2017/10/14(土) 05:23:42.42ID:iik+6J8W0
:let i=1 | 2,4g/./s/c/\=("[".i."]")/g | let i+=1
上のだと4行目のcは同じ数字にしか置換されない
↓これで
let g:c=0
function! Inc()
let g:c+=1
return g:c
endfunction
:let g:c=0 | 2,4g/^/s/c/\=("[".Inc()."]")/g
:global コマンドを使い慣れてないので2,4g/^/s/cのとこはキレイでないかもしれない
上のだと4行目のcは同じ数字にしか置換されない
↓これで
let g:c=0
function! Inc()
let g:c+=1
return g:c
endfunction
:let g:c=0 | 2,4g/^/s/c/\=("[".Inc()."]")/g
:global コマンドを使い慣れてないので2,4g/^/s/cのとこはキレイでないかもしれない
2017/10/14(土) 21:37:36.91ID:DefQA8cL0
2017/10/14(土) 22:24:49.10ID:Fp7rFVAI0
関数を作ると別ファイルに分けたくなる→プラグイン開発の道へ
2017/10/15(日) 11:40:20.45ID:+vJKpvKe0
連続した2行の中のそれぞれのある列からある列までの文字列を上下入れ替えたいんだけど、
素早くやる方法ってある?
たとえば、こんなの (便宜的に半角空白2文字を倍角空白1文字に置き換えた)
bindsym up command1
bindsym down command2
こんな2行の文字列内の「up 」と「down」を入れ替えたい。
もちろん up の後ろの2つの空白文字も含めて。
こんな感じに。
bindsym down command1
bindsym up command2
プログラミングとかコンフィグファイルとか書いてると時々あって、
今まで普通に消してから書き直すか、片方を一度別の文字列に置換する方法でスワップしてたんだけど、
これが結構疲れるんだ。
長い文字列だと、作業中に何をやろうとしていたのか、どこまでやってたのか忘れることもあるし。
なんか良い方法ない?
キーストロークでやる方法、コマンドを駆使する方法、何でもいいんだけど。
素早くやる方法ってある?
たとえば、こんなの (便宜的に半角空白2文字を倍角空白1文字に置き換えた)
bindsym up command1
bindsym down command2
こんな2行の文字列内の「up 」と「down」を入れ替えたい。
もちろん up の後ろの2つの空白文字も含めて。
こんな感じに。
bindsym down command1
bindsym up command2
プログラミングとかコンフィグファイルとか書いてると時々あって、
今まで普通に消してから書き直すか、片方を一度別の文字列に置換する方法でスワップしてたんだけど、
これが結構疲れるんだ。
長い文字列だと、作業中に何をやろうとしていたのか、どこまでやってたのか忘れることもあるし。
なんか良い方法ない?
キーストロークでやる方法、コマンドを駆使する方法、何でもいいんだけど。
2017/10/15(日) 14:06:22.54ID:ORQlSw2R0
>>610
自分は true/false を入れ替えるのにこれ使ってるわ
sagarrakshe/toggle-bool
自分はこれで足りてるけど、こっちのが高機能で色々カスタマイズできるみたい
AndrewRadev/switch.vim
自分は true/false を入れ替えるのにこれ使ってるわ
sagarrakshe/toggle-bool
自分はこれで足りてるけど、こっちのが高機能で色々カスタマイズできるみたい
AndrewRadev/switch.vim
2017/10/15(日) 21:11:15.02ID:+vJKpvKe0
>>611
ごめん、例が誤解させちゃったみたい。
up と down だったのは特に考えなしに挙げた例で、
実際は何か意味的に対になる単語という訳じゃないんだ。
だから、予め辞書みたいに登録しておけない。
純粋に、2つの行の、同じ列から同じ列までの範囲の文字列を入れ換えたい。
矩形選択した範囲内の一番上の行と一番下の行をスワップする。
これができれば理想的なんだけど。
ごめん、例が誤解させちゃったみたい。
up と down だったのは特に考えなしに挙げた例で、
実際は何か意味的に対になる単語という訳じゃないんだ。
だから、予め辞書みたいに登録しておけない。
純粋に、2つの行の、同じ列から同じ列までの範囲の文字列を入れ換えたい。
矩形選択した範囲内の一番上の行と一番下の行をスワップする。
これができれば理想的なんだけど。
2017/10/15(日) 22:25:14.16ID:hbvh5OYC0
2017/10/16(月) 14:09:16.56ID:NHOddXz50
2017/10/16(月) 15:36:02.02ID:A0Q+iCAA0
>>610
洗練されてないコードだがこんなんとか
function! Sw()
let pat = '\s\+\S\+\s\+'
let l = getline('.')
let m = matchstr(l, pat)
let l2 = getline(line('.') + 1)
let m2 = matchstr(l2, pat)
cal setline(line('.'), substitute(l, pat, m2, ''))
cal setline(line('.') + 1, substitute(l2, pat, m, ''))
endfunction
洗練されてないコードだがこんなんとか
function! Sw()
let pat = '\s\+\S\+\s\+'
let l = getline('.')
let m = matchstr(l, pat)
let l2 = getline(line('.') + 1)
let m2 = matchstr(l2, pat)
cal setline(line('.'), substitute(l, pat, m2, ''))
cal setline(line('.') + 1, substitute(l2, pat, m, ''))
endfunction
2017/10/20(金) 00:35:41.26ID:9Lq922rL0
>>610
矩形選択した2行の同列の文字列同士を交換するならこんなんでどうか
function! s:SwapLine()
let pos1=getpos("'<")
let pos2=getpos("'>")
let l1=pos1[1]
let c_start=pos1[2]
let l2=pos2[1]
let c_end=pos2[2]
let len=c_end - c_start + 1
let text1=strpart(getline(l1),c_start-1,len)
let text2=strpart(getline(l2),c_start-1,len)
let line1=getline(l1)
let line2=getline(l2)
let newline1=strpart(line1,0,c_start-1).text2.strpart(line1,c_end)
let newline2=strpart(line2,0,c_start-1).text1.strpart(line2,c_end)
call setline(l1,newline1)
call setline(l2,newline2)
endfunction
vmap <C-S> :<C-U>call s:SwapLine()<CR>
矩形選択した2行の同列の文字列同士を交換するならこんなんでどうか
function! s:SwapLine()
let pos1=getpos("'<")
let pos2=getpos("'>")
let l1=pos1[1]
let c_start=pos1[2]
let l2=pos2[1]
let c_end=pos2[2]
let len=c_end - c_start + 1
let text1=strpart(getline(l1),c_start-1,len)
let text2=strpart(getline(l2),c_start-1,len)
let line1=getline(l1)
let line2=getline(l2)
let newline1=strpart(line1,0,c_start-1).text2.strpart(line1,c_end)
let newline2=strpart(line2,0,c_start-1).text1.strpart(line2,c_end)
call setline(l1,newline1)
call setline(l2,newline2)
endfunction
vmap <C-S> :<C-U>call s:SwapLine()<CR>
2017/10/20(金) 14:23:23.01ID:B1/d+O3g0
618名無しさん@お腹いっぱい。
2017/10/24(火) 12:52:35.00ID:lJHX4Ddo0 ファイルの最後尾を見たくてvim(gvim)をリードモードで開きたいです。
開いたあとにshift+gや、.vimrcの設定ではなく、起動時のオプションで、リードモード、最後尾を表示、で開くにはどうしたら良いでしょうか?
ソフトの実行ログで、最後尾周辺に見たい情報があります。
開いたあとにshift+gや、.vimrcの設定ではなく、起動時のオプションで、リードモード、最後尾を表示、で開くにはどうしたら良いでしょうか?
ソフトの実行ログで、最後尾周辺に見たい情報があります。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【熊本】園児に強制性交か 保育所勤務の男を逮捕「性的な欲望が我慢できなかった」警察は余罪を調べる [七波羅探題★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 【前橋市】小川晶前市長とラブホテルで打ち合わせをした54歳男性職員を停職処分 今月末で依願退職するという [シャチ★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★3 [ぐれ★]
- 【サッカー】元日本代表DF冨安がオランダ1部アヤックスと大筋合意か 現地メディア報じる [久太郎★]
- 中国の日本向けレアアースの輸出止まる、高市のせいで日本終了のお知らせ [931948549]
- 高市早苗「竹島は日本領土」 [834922174]
- あくたんのおまんこって甘そうだよな🤤
- 🏡
- ヨドバシ店員「転売対策です。エヴァに出てくるロボットの名前をどれかひとつ言ってください」 [268718286]
- 暖房やめて湯たぼんにしようと思ってる
