Vi & Vim

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

1
バックスペースを使用して、現在のコマンドを通常モードで変更しますか?
ノーマルモードでコマンドを入力すると、タイプミス10dkが発生する場合があります19d。たとえば、タイプしようとすると、誤ってタイプし始める場合があります。 コマンドがまだ完了/コミットされていないので、19d<backspace><backspace>0dkエスケープを押してコマンドを再試行する代わりに、バックスペースを使用して誤ったキーを削除することは可能ですか? 副題:現在のコマンドがコミットされる前に保持するデータ構造のVim用語はありますか?

1
入力を取得中に更新される演算子を定義するにはどうすればよいですか?
テキストの領域を取り、入力文字列を要求し、入力文字列を引数として使用して領域を表形式に揃える演算子マッピングを定義しました。それはうまくいきます。 私は、vim-operator-userを使用して新しい演算子を定義するのに役立つように、次のように実装しました。 map \aa <Plug>(operator-align) call operator#user#define('align', 'Align') function! Align(motion_wiseness) let expr = input("align: ") if len(expr) != 0 execute "'[,']Tabularize /".expr endif endfunction function! Getchar() let c = getchar() if c =~ '^\d\+$' let c = nr2char(c) endif return c endfunction 次に、整列する正規表現を入力しながら、その場で更新できるかどうか疑問に思いました。現在のアプローチの問題は、正しい式を使用していない場合、元に戻してからやり直す必要があることです。 インタラクティブな試みのために、私はこれを行いました: map \== <Plug>(operator-align-interactive) call operator#user#define('align-interactive', 'AlignInteractive') …
9 vimscript 

1
vimのカスタムエンコーディングを定義できますか?
私はプログラミングパズルとコードゴルフを頻繁に使用しています。あちこちの多くのユーザーが、純粋にゴルフのためのカスタム言語を書いています。今は自分で作業しています。これらの言語の多くには独自のカスタムエンコーディングがあり、より多くのコマンドを1バイトに圧縮できます。たとえば、真剣に、ゼリーと05AB1E。 独自のカスタムエンコーディングを使用するようにvimを構成できますか?Unicodeのコードポイントへのバイトのマッピングを構成したいと思います。例えば: 0x01 == "¢" 次に、と入力<C-v><C-a>すると¢文字が表示され、書き込むとバイトが保存されます0x01。 これはリモートでも可能ですか?また、これはシステムクリップボードでうまく機能しますか?(たとえば、ブラウザからvimにコピーして貼り付けることができます)
9 encoding 

2
Vim内のディレクトリを編集する
Vim内のディレクトリを編集することはできますか?(いくつかのコマンドはディレクトリに対して機能しています)。 Vim内のディレクトリで実行できる操作の種類を知りたい。Vimはディレクトリを編集用に開くことができます。それを操作するコマンドもあると思います。ただし、通常のコマンドはディレクトリに対して異なる動作をします。 たとえばI、ファイル名を押して入力し、ディレクトリを保存します。を指定するとls、そのファイルが表示されます。

1
現在の検索結果を視覚的に選択
私がしているhlsearch設定が、それは時々私は視覚的に選択された検索語を持っている、とだけ打つことができるトンの帽子を考えに私をlulls cそれを変更します。 検索された用語は、文字、単語、行などの簡単な数ではない可能性があります-とにかく、私は数えたくないです。 たとえば、現在の強調表示が停止するまでどこを実行するvh(またはch)方法はありhますか?

2
「x」で始まる重複行、「x」を「y」に置き換えますか?
次のパターンのファイルがあります。 foo 111 baz foo 222 baz foo 333 baz に変える必要がある foo 111 bar 111 baz foo 222 bar 222 baz foo 333 bar 333 baz したがって、で始まるすべての行を複製し、複製fooのみを変更fooして、残りの行(それぞれの場合で異なる)はそのままにしておきます。これを行う方法?

1
単語の途中でスマートな単語補完
次の2行を含むファイルを考えます。 someLongFunction someFunction 2番目の単語の途中で挿入モードにいるとき some|Function と押すとCtrl-n、 someLongFunctionFunction 代わりに次の「スマート」な完了を取得するようにVimを構成する方法はありますか? someLongFunction

1
オペレーター保留モードでカーソルの形状を変更する
Gvimでのカーソル: を押した後のGvimのカーソルd: オペレーター保留モードのときにターミナルVimでカーソルを変更する方法はありますか?スクリーンショットのように見える必要はありません。 これはによって行われo:hor50-Cursorでguicursorgvimをのために。Vimに表示されるオプションは3つだけです。 t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'* t_SR start replace mode (underline cursor shape) *t_SR* *'t_SR'* t_EI end insert or replace mode (block cursor shape) *t_EI* *'t_EI'* |termcap-cursor-shape| しかし、オペレーター保留モードについては何も...

1
<Esc>を再マップするとカーソルがジャンプするのはなぜですか?
で.vimrc: inoremap ii &lt;esc&gt; " ii to go back into command mode 問題は、の後ii、カーソルが35列右にジャンプすることです。に影響する他の唯一の行Esc: nnoremap &lt;esc&gt;&lt;esc&gt; :noh&lt;return&gt;&lt;esc&gt; 私はそれをコメントアウトしようとしました、助けにはなりません。 フル.vimrc: set nocompatible filetype off " Vundle --------------------------------------------------------------------- set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'gmarik/Vundle.vim' Plugin 'bling/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'scrooloose/nerdtree' Plugin 'scrooloose/nerdcommenter' Plugin 'scrooloose/syntastic' Plugin 'freitass/todo.txt-vim' Plugin 'plasticboy/vim-markdown' Plugin 'tpope/vim-fugitive' " :GitCommands Plugin …

1
シェルを呼び出す際の誤ったエンコーディング
私はDOTダイアグラムを試し、次のことを試みました。 :! dot -Tpng -oFab.png % ファイル名に特殊文字(ó「Fabricación」の「」)が含まれているため、エラーが発生しました。 C:\windows\system32\cmd.exe /c ( dot -Tpng -oFab.png Fabricaci├│n.gv) Error: dot: can't open Fabricaci├│n.gv shell returned 2 Hit any key to close this window... ご覧のとおり、「├│」の特殊文字が変更されています。これは、Win7とNTFSでのvimとgVim 7.4に対応しているため、ファイル名はUTF16であると想定しています。また、shell / cmdを呼び出すときに、ファイル名が他のエンコードとして解釈されていると想定しています(デフォルトのコードページ850を指摘してくれたCarpetsmokerに感謝します)。 どうすれば修正できますか? 確かに、ファイルの名前を変更することはできますが、これが発生する理由と修正方法を知りたいのですが。 更新:私はこの質問をsuperuser.SEで見つけました(@ ChristianBrabandtによるフィードバックに感謝します)が、それも役に立たないようです。

1
外部コマンドで視覚的に選択されたブロックを変更する方法は?
2つの垂直部分で構成されるファイルがあります。左側では、データは既にフォーマットされており、変更したくありません。右側のデータのみをフォーマットします。次のような行があるファイルがあるとします foo=bar baz # Neato Junk quux=xyzzy # Bilbo Baggins Ring そのような多くの行で。「#」文字の右側のテキストのみを変更したい。次の式で必要なテキストを選択しました。 gg /# ctrl-v G $ しかし、それを(たとえばで:'&lt;,'&gt;!column -t)変更しようとすると、実際にはすべての行全体が変更されます。視覚的に選択された部分のみを変更するために使用する正しい式は何ですか?

2
Vimでの大文字と小文字が混在する正規表現の置換
多くの場合、大文字と小文字が混在するファイルがある状況に遭遇します。例えば、 CamelCase and camelCase 生成するVim正規表現の置換を探しています。 AnotherCase and anotherCase 今は、視覚的にラインを選択した後、2つのステップでこれを行います。 :s/CamelCase/AnotherCase/g :s/camelCase/anotherCase/g これは1つの置換ステップで可能.vimrcですか、それとも関数のような他のオプションを調べる必要がありますか?

1
単一引用符で区切られた数値リテラルのVim構文の強調表示
C ++ 14では、単一引用符を使用して大きな数値リテラルの桁を区切るオプションが提供されました。これはVimの構文強調表示を壊します。 たとえば、次のC ++ 14プログラムを考えてみます。 #include &lt;stdlib.h&gt; int main(int argc, char** argv) { // small numbers are fine int normal_number = 5; // large numbers have the correct highlighting but they're hard to visually parse int huge_number = 1000000000; // apostrophes help with visual parsing but mess up syntax …

2
「[[」、「]]」、「[]」、「] [」を理解する
これらのテキストオブジェクトの動きを理解するのは難しいと感じました。 *]]* ]] [count] sections forward or to the next '{' in the first column. When used after an operator, then also stops below a '}' in the first column. |exclusive| Note that |exclusive-linewise| often applies. *][* ][ [count] sections forward or to the next '}' in the first column. …

3
新しいvimファイルにスケルトンテキストを追加するにはどうすればよいですか?
私はC ++の記述にVimを使用しており、#include&lt;&gt;作成する新しい各ファイルに含める必要のあるステートメント、コメントなどがかなりあります。私は追加しました autocmd BufNewFile *.cpp r C:\(full file path of skeleton text file) vimrcに追加しました。これにより、必要なテキストを含むバッファーが作成されると聞きました。このテキストを新しいファイルに追加するにはどうすればよいですか?バッファからこれを行う簡単な方法はありますか、またはこれを実行する別の簡単な方法はありますか?テンプレートプラグインについても少し聞いたことがあります。私のためにこれを行うことができる非常に単純なものはありますか?

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