Vi & Vim

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

2
コマンドラインモードでviを使用する方法
常にホームポジションのままでコマンドラインモードを操作する方法はありますか? 特に、次の2つのアクションは面倒で、指を矢印キーに移動する必要があります。 動き回る:通常の位置のままでコマンドラインモードで前後に移動する方法はありますか? コマンドラインにコピーして貼り付けるにはどうすればよいですか?コマンドライン自体の一部から別の部分、またはテキストやクリップボードからの両方をコピーすることを意味します。

3
選択範囲または一致の各行に増分番号を挿入します
解決するための2つの一般的なアプローチについて考えることができる問題がありますが、どちらのアプローチの詳細かわかりません。 ... Level 1: cũng also Level 1: và and Level 1: như like; such as Level 2: các plural marker Level 2: của belonging to ... 「レベルn」で始まる各行に、「01」で始まる番号を挿入します。簡単にするために、数字を前に付けましょう。 アプローチ1:同じレベルのすべてのラインを手動で選択します。魔法を呼び出す私はすぐに学びます。 アプローチ2:すべての行が指定されたレベルに一致する検索と置換を記述します。これには、一致ごとに置換テキストに番号が含まれ、一致ごとに1ずつ増加します。 StackOverflowや他のVimサイトで同様の質問を見つけましたが、それぞれに次の問題が1つ以上あるようです。 任意の増加する番号ではなく、現在の行番号を挿入することです。 数字のゼロ詰めは行いません。 Windows 7で実行しているVim 7.4の選択では実際には機能しません(これらはエラーになりE481: No range allowedます)。 Windowsでmswin.vimを使用してgVimを実行していますが、セットアップをカスタマイズする必要なく、すべてのバニラVimインストールで機能するソリューションが最適です。
10 macro  replace 


3
fold-exprの書き方は?
fold-expr(:h fold-expr)に関するヘルプページを読みましたが、式で使用されている構文を説明していません。 4つの例がありました。 :set foldexpr=getline(v:lnum)[0]==\"\\t\" :set foldexpr=MyFoldLevel(v:lnum) :set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1 :set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1 v:lnumそれがインデントレベルを必要とする行であり、式2が関数の呼び出しであることを理解しました。 式1、3、および4はどうですか?誰か私に説明してくれませんか?
10 folding 

2
コマンドラインから標準出力にバッファ全体を書き込む方法は?
バッファ全体を/dev/stdoutファイルではなく標準出力()に書き込みたいのですが、次のコマンドはファイルの編集中に期待どおりに機能します。 :w >> /dev/stdout ヒント:Control+ Lを押して画面を更新します。 しかし、コマンドラインから(非対話的に)同じことを行おうとすると、期待どおりに機能しません。たとえば、次のようになります。 $ echo This is example. | vim - '+:w >> /dev/stdout' '+:q!' Vim: Reading from stdin... 同じ:w !tee、:x! /dev/stdout、:%printおよび同様。 終了する前に、それは言っています:[Device] 1L, 17C appended。 パイプの途中でvimに標準入力を標準出力に強制的に書き込む方法はありますか?多分それは何とか緩衝されていますか?



5
選択を外部コマンドの出力で置き換えます
ファイルに次のようにXXXX選択したプレースホルダーを含む行があると仮定vします。 XXXX Some other text どうすれば変更できるだけXXXXのような、外部コマンドの出力でdate +%Y%m%d? 私は限りを得ました :'<,'>!date +\%Y\%m\%d しかし、それは行全体を置き換えました。

3
コマンドラインバーを取り除く方法は?
私はvim-airlineを使用していますが、とてもいいです。 ただし、その下にある2番目のステータスバーが非表示になりました。 私はで試しset noshowmodeましたが.vimrc、それはデフォルトのモードインジケータを非表示にするように見えました。 明らかに、そこにあるファイル名は冗長であり(航空会社がそれをカバーしています)、行数と文字数は私にはそれほど役に立ちません。 また、非表示にした場合、自分で使用するechoe "hello"と元に戻り.vimrcますか? 俺の .vimrc

2
Vimスクリプトでスペースを含む文字列を処理する方法は?
vimrcに次のコマンドがあります。 execute "set path+=".getcwd()."/**" 現在の作業ディレクトリがのようであれば、うまく機能します/home/tamlok/my_work/。ただし、ディレクトリになどのスペースが含まれている場合D:\Program Files\vim\、vimは文句を言うでしょう。 substitute()関数を使用してこれを修正し、すべてのスペースをエスケープされたスペースに置き換えることができると思います。経験豊富なビマーはここで何をしますか? もう1つの問題は\Windowsにあります。場合getcwd()を取得D:\Program Files\vim\、私はエスケープする必要がありますか\と\\かと交換してください/? 今のところ私はそれをこのように扱います: let mycwd=substitute(getcwd(), '\\', '/', 'g') let mycwd=substitute(mycwd, ' ', '\\ ', 'g') execute "set path+=".mycwd."/**" それは大丈夫ですか?どんな助けでもありがたいです!どうもありがとう!

1
なぜexrcは危険なのですか?
set exrcディレクトリ.vimrcごとのファイルを使用するためのさまざまな場所で言及されているのを見てきましたが、言及されるたびに、危険であるため実際には使用しないよう強く勧められています。私はまたset secure、相続の危険のいくつかを修正することになっていることにも遭遇しましたがset exrc、それでもコンセンサスは使用しないようset exrcです。 さまざまな理由を聞いたことがありますが、を使用set exrcする場合、使用しない場合の危険性は何set secureですか?
10 vimrc 

1
「g」の意味は何ですか?
注:この質問にはStackOverflowに関する2種類の回答がありますが、おそらくここからより良い回答が得られると思いました。そうでない場合は、少なくとも、それがどこにあるべきかが文書化されます。 gで始まるvimコマンドは何ですか? vimノーマルモードでのgキーの使用 g通常モードのコマンドでの文字の意味的な意味は何ですか?私は外の一体を使用しているgg、Gと<n>G、今日まで、私はの意味は何かを見つけるために考えたことがなかったg大規模であるのVi禅。 今日、コード内の一連の定数を小文字にする必要があり、文字ごとよりも優れた方法が必要だと考えました(<n>~私が知らない奇妙な理由のために機能しないため)。g~特にで見つけましたg~iw。 これにより、リンクされた回答が見つかりましたが、それらは満足できる説明ではなく、起動するためにvi.SEではなくStackOverflowにあります。 そう、 viの意味論的意味はg何ですか? viセマンティックな意味で、私は人々が理解することを期待します。ciwつまり、単語のc変更はi、変更を意味し、は、内部のテキストアイテムをw意味し、スペースまたは句読点で区切られた単語を意味し_ます。 PS、これにタグを付けるにはどうすればよいですか?

2
複数のファイルタイプに単一のftpluginを使用する
私はftpluginを&runtimepath/ftplugin/c.vim使用して、cファイルのすべての優先オプションを設定しています。ただし、cppファイルにも同じ設定を使用したいと思います。設定をコピーするだけでいいのですが、それは冗長なようです。複数のファイルタイプのftpluginをロードする方法はありますか?
10 filetype 


2
マクロに最後のアクション(。)を保存する
使用事例 通常モードです。マクロの記録については明確に考えていませんが、コマンドを1つ変更します。これで、ドットを使用してこのアクションを繰り返すことができます。 毎回コマンド全体を入力するのではなく、後で使用するためにマクロに保存しておくと便利なアクションだと気づきました。ドットを使用して、このコマンドを必要とするすべての変更に今すぐ対応するか、編集を続行して、後でマクロに保存してこのコマンドを使用できます。 後者は私がやりたいことですが、変更を元に戻す最も簡単な方法は簡単ではありません。変更を元に戻し、マクロの記録を開始し、コマンドを再入力して必要な変更を行い、マクロの記録を停止します。 これまでに試したこと: マクロにドットを記録すると、ドットが実行される変更ではなくドットが記録されるため、機能しません。(たとえば、ドットで保存されたコマンドがd5w、マクロの記録を開始し、を介してアクションを実行した場合、マクロを実行するたびに5ワードが削除されることを期待すると、それは起こりません。次に実行するときマクロはコマンドではなくドットを実行しますd5w。つまり、マクロの記録後に他の変更を行った場合、たとえば、3つの単語を使用d3wして削除し、それが最後に行った変更である場合、マクロを実行すると3つ削除されます。 5ではなく単語です。実行しているだけなので.)

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