Vi & Vim

テキストエディタのviおよびVimファミリを使用している人のためのQ&A

1
Vimで元に戻す粒度を変更するにはどうすればよいですか?
ある時点で、Vimはを押すと単語全体を元に戻しuます。 [i]typing some words[C-c][u] 結果として typing some ただし、取り消しの細分性は、一度に1文字ずつ削除するように変更されたようです。 [i]typing some words[C-c][u] 結果 typing some word Practical Vimで元に戻す粒度をカスタマイズすることについて何か読んだことを覚えていますが、それを制御する方法を思い出せません。助けてくれてありがとう!
11 undo-redo 

2
元に戻すツリーでファイルのすべてのバージョンを検索する
(バニラVIMコマンド、Gundo、または別のプラグインを使用して)ファイルのランダムな古いバージョンを1つずつ確認するよりも、Vimの取り消しツリーで特定の変更を見つける簡単な方法はありますか? 理想的には、Gundoによってプレビューペインに表示されるすべてのdiffと照合する検索パターンを入力し、その検索に一致するdiffがあるバージョンをGundoに表示させたいです。 この質問はほとんど同じものを尋ねますが、質問者は単にGundoを推奨する回答を受け入れました。これは素晴らしいのですが、私が求めていることを実行していないようです。 これをGundoの新機能として売り込みましたが、返答はありませんでした。 編集: undotreeのこの機能に対するオープンリクエストがあります。 注:この質問は、スーパーユーザーから「手動で移行」されています。
11 undo-redo 

1
:set bg = darkと:set bg = lightの順序が重要なのはなぜですか?
端末のカラーパレットとGVimのカラーパレットを一致させようとしているときに、次のことに気づきました。 GVimとVimを開くと、次のように表示されます (これは同じファイルですvimrc。) 実行すると:set t_Co=256、GVimで何も起こりません(点滅することを除いて)、端末の色は異なって見えます。私が行う場合は:set bg=dark、今、それは何の違い(再びgvimを点滅)を行うものではありません。私がそれを繰り返す:set bg=lightと、私は次のようになり:set bg=darkます: 両方:set bg=darkと:set t_Co=256私のvimrcに存在します。なぜ私:set bgと:set t_Coこだわっていないのですか?また、最初にそうでなかった変更を行った:set bg=dark後に設定をやり直すのはなぜ:set bg=lightですか? 私はArch Linuxを使用していますが、ターミナルはGNOMEターミナルで、を持っていません.gvimrc。 $ vim --version VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Feb 4 2015 08:03:11) Included patches: 1-617 Compiled by Arch Linux Huge version with GTK2 GUI. Features included (+) or not …

2
部分パスのZshのようなタブ補完
Vimでのファイル名のBashのような部分的なタブ補完に関連 の本当に素晴らしい機能の1つは、zshたとえばls /u/s/m/m/who.1を押しTabて、押して、まで完成させる ことができることですls /usr/share/man/man1/who.1.gz。慣れると/u<tab>/s<tab>/m<tab>/m<tab>...、特に部分パス全体が1つの実際のパスにしか解決できないが、個々のコンポーネントごとに複数の補完が存在する場合は、に戻るのは本当に面倒です。これはVimで実現できます:eか:cd? zshには、他の便利なパス関連の機能があります。たとえば、を使用cd foo barして、にfoo置き換えられたbar(つまり、に/blah/foo/baz/yadaなる/blah/bar/baz/yada)同等のパスに移動します。これらも取り入れたソリューション(基本的には、シェルに関連するタスクを、それらを非常にうまく実行するシェルに引き継ぐ)があれば、すばらしいでしょう。

2
vimの読み込み時間を短縮する
私はhttps://github.com/carlhuda/janus vimディストリビューションを使用しており、ロード時間に明らかに満足していません。 vimの読み込み時間をプロファイルしてスピードアップするための最良の方法は何でしょうか?ロード時間をhttp://vim.spf13.com/と比較することも興味深いでしょう。

2
変数が最後に割り当てられた場所をどのようにして見つけますか?
設定しようg:netrw_list_hideとしていますが、動作しないようです。私が何に設定したとしても、.vimrc常に価値があります,^\.\.\=/\=$。私がvimrc再びファイルを入手した場合にのみ、正しい値が保持されます。 これをデバッグするにはどうすればよいですか?その変数を設定しているプラ​​グインがあると思いますか?おそらくvimrcロードされた後で、それがどこに設定されているのかを見たいのです。

1
ファイルなし、存在しないファイル、または空のファイルでVimを起動するときにautocmdを実行するにはどうすればよいですか(ただし、既存のファイルで起動するときはできません)。
Vimを起動するときに、次のシナリオでautocmdを実行したいと思います。 ファイル名が指定されていません。 ファイルが新しい場合。 ファイルは存在するが完全に空白の場合。 上記の3つのケースすべてで、autocmdを実行したいと思います。具体的には、上記のシナリオでのみ挿入モードを自動的に開始したいと思います(すでに存在していて空白ではないファイルを開いているときではありません)。 更新: 私は次のことをに入れようとしました_vimrcが、うまくいきません(さらに、ファイルを開く前に、ファイル内の文字数をカウントする(ゼロかどうかを確認する)関数がvimにあるかどうかわかりません: if @% == "" || filereadable(@%) autocmd BufRead,BufNewFile * startinsert endif

6
現在の行ではなく、カーソルの上/下の行を削除するにはどうすればよいですか?
現在の行より上の行(またはn行)を削除するコマンドはありますか?上記=電流は含まれていません。 dkつまり、現在の行を削除しない代替手段はありますか?o/ Oとp/のP動作に似ていますが、削除を伴います。 現在、を実行していますkdd。これは、カーソルを1行上に移動して削除します。私は何ができるnnoremap <Leader>d kddとnnoremap <Leader>D jdd-が、カーソルを移動しない代替を持つことは良いオプションのように思えます。そのようなものはありますか?

2
showcmdでコマンド履歴を表示する
set showcmdVimを使用すると、画面の最後の行に部分的なコマンドが表示されます。たとえば、ノーマルモードでコマンドを入力するとdt.、最後の行が表示されdt、その後、.コマンドを押すと、コマンドが完了しているため、何も表示されません。 完全なコマンドを表示する方法はありますか?たとえば、と入力するとdt.gU(、最初dt.に表示されます。そして、2番目のコマンドの入力を開始すると、最初のコマンドはクリアされ、最終的にgU(は表示されるだけになります。 これは、例えばGIFを説明するのに役立ちます。予期しない結果が発生した場合は、入力した内容を確認します。

1
Windows 7のGvimおよびVIMでUnicodeを入力できない
(g)Vimを使用して別の言語で入力したい。しかし、言語バー(デバナーガリ文字またはヒンディー文字)を使用して別の言語に切り替え、何かを入力すると、(g)vimが表示されます??? ??。 私が試したこと: write ++enc=utf-8 foo.txt set fileencoding=utf-8 set enc=utf-8 情報: GVimバージョン:7.4、およびその+ multi_byte。 デフォルトのvimrcファイルに変更はありません。 (g)vimで始めたところです。

2
すべての行をどのパターンに一致させるのですか?
特定のパターン(など;)がある行に対してのみ行を結合したいのですが、g/;/j数回呼び出さないと、期待どおりに機能しません。 たとえば、次のコンテンツ: a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c 使用時::g/;/j出力は次のとおりです。 a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c または:g/;/-j与える: a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c と似ています:g/;\_.\{-};/j。 私の予想される出力は: a 1; 2; 3; 4; 5; b 6; …

2
vimプラグインを作成するために従うべきことは?
だから私の質問は簡単です。vimを作成するためだけにvimスクリプトを学ぶのは良い考えですか、それとも他の受け入れられている言語を採用する必要がありますか? たとえば、このリンクは、Pythonを使用してvimプラグインを作成する方法を示すYouTubeビデオを開きます。 いくつかのvimプラグインを作成するつもりがない限り、Vimスクリプトは完全には役に立ちません。それでは、vimスクリプトのみを使用しないと実行できない特定のことはありますか?
11 vimscript 

3
パラメータを使用してマッピングを作成することは可能ですか?
私はそのようないくつかのマッピングを作成しました: :nnoremap <buffer> <leader>xyzABC :call SomeFunc('ABC')<CR> :nnoremap <buffer> <leader>xyzDE :call SomeFunc('DE')<CR> :nnoremap <buffer> <leader>xyzFoo18 :call SomeFunc('Foo18')<CR> :nnoremap <buffer> <leader>xyzBar22 :call SomeFunc('Bar22')<CR> 必要に応じて機能します。 私は現在、マッピングの明らかな冗長部分を削除できるようにするマップテンプレートを作成する可能性を探しています。 :nnoremap <buffer> <leader> xyz? :call SomeFunc(?)<CR> これにより、任意の値をパラメータとしてに渡すことができますSomeFunc。 そのような可能性はありますか?

5
端末間でコピーする方法は?
Linuxシステムを使用しています。2つのvimが2つのターミナルで開かれます。次に、AからBにテキストをコピーします。そのための1つの方法は、Aでテキストを選択し、マウスを使用してコピーしてからBに切り替え、挿入モードでコマンド<c-r>+を使用してテキストを貼り付けることです。 とにかくマウスを使わずに実行することはありますか?"+yyAのように、Bに切り替えると、o<c-r>+?私はいくつかの組み合わせを無駄に探索しました。そして、「端末間でコピー」を検索しましたが、何も見つかりませんでした。 ユーザ@statox、すなわち、ビジュアルモードを使用して、一つの解決策を提案しv$"+y、A、Bにスイッチにo<c-r>+。 vモードに入らずにAのテキストをコピーできる簡単な方法はありますか?確かにvモードに入るのにあまり多くのキーストライクは必要ありません。もっと良い方法があるかどうか疑問に思います。例えば。カーソルが行の中央にある場合、行yy全体を(registerに")コピーしますが、0v$y追加のキーストロークで同じことを行います。 それとも、私の質問は、より少ないキーストロークでどのような方法がある場合に減少させることができる0v$"+yためコピー私が使用できるように<alt-tab>o<c-r>+貼り付けます。

2
キーを押したままマッピングを繰り返す方法
私は自分で持って.vimrc簡単に分割ウィンドウのサイズを変更するには、いくつかの単純なマッピング: noremap <Leader><UP> <C-w>+ noremap <Leader><DOWN> <C-w>- これはかなりうまくいきますが、たとえば、10行のウィンドウのサイズを変更したい場合は、Leader+ UP10回押して離す必要があります。 キーが押されている間、どうすればこのマッピングを繰り返すことができますか?Leader+ を押すとUP、マッピングが1回適用され、その後しばらくすると、キーを押している間、マッピングが再度適用されます。 注:<C-w>+カウントのプレフィックスを付けることは可能であり、マッピングでハードコード化することも、マッピングを使用する前にカウントを入力することもできますが、それは私がしたい方法ではありません。 注2:ウィンドウのサイズを変更するための一般的なマッピングは、数回押しやすいキー+と-キーを使用することですが、これらのキーを使用してそれを行うことはしたくありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.