Vi & Vim

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

2
別のキーマップで疑似挿入モードを作成するにはどうすればよいですか?
私は2つの異なるキーボードレイアウトを定期的に使用する(Programmers-DvorakとTurkish-F)、少し変わった位置にいます。これらのレイアウトはお互いにかなり異なり、私は1組の筋肉の記憶でvimに習熟することができるだけです。私はDvorakレイアウトのvimコマンドにはかなり熟練していますが、キーボードがトルコ語Fレイアウトの場合は、ほとんど使用できません。残念ながら、私は定期的に英語とトルコ語の両方、さらには混合言語でファイルを編集しています。私の能力は、それぞれのキーボードレイアウトでどちらかの言語をうまく入力できるほどですが、私の脳はそれらをクロスワイヤして、Dvorakレイアウトからトルコ語で単語を数文字入力することを拒否します。 Xorgのレイアウトを変更するための2つのキーと敬礼のバインディングがありますが、混合言語ファイルを編集する場合、vimで厄介なワークフローが残ります。 <vim commands…>i<switch to tr>…content…<escape><switch to en><vim commands…> これを次のように短縮できるようにしたいと思います。 <vim commands…><leader>i…content…<escape><vim commands…> ...を使用すると、システムのキーボードレイアウトを変更せずにトルコ語のレイアウトをエミュレートするために<leader>i一連の:imap値が設定されます。同時に、i追加モードなしで挿入モードに切り替わり:imapます。値自体は簡単です。次のようなアルファベットのマッピングが必要です。 :imap a u :imap A U :imap o i :imap O İ "etc. 質問ですが、どのようにセットアップ2つのインサートモードへ、マッピングの束を除いて同一である、そしてどのように私はこれらのモードトリガすることができます1つのノーマル挿入モードとモードのインサート1つの擬似<leader>i、<leader>aなど?

2
`:w'`を`:w`にエイリアスして、 'という名前のファイルを作成しないようにする方法はありますか?
たまに、私の小指が'エンターに到達するまでキーをかすめるため、が発生し:w'<Enter>ます。 私はもう試した: cabbrev w' :w cabbrev w\' :w cabbrev "w'" :w それらのどれも動作しません。エイリアスする方法がある:w'のでは:w? また、通常のコマンドラインの代わりにcmdwin(:help cmdwin+ nnoremap : :<C-F>)を使用しているので、そこでも機能する場合はボーナスポイントになります。

1
デッドキーでのマークの使用
私は、バックティック(`)がデッドキーであるキーボードレイアウトを使用しています。 これは、バックティックとそれに続く母音(たとえば`a)を入力すると、Vimに表示されるのはアクセント付き文字(à)であることを意味します。したがって、でマークを設定すると、でマークmaの行にジャンプでき'aます。しかし、マークの特定の場所にジャンプして`aも機能しません。 私はこれの回避策を見つけました:デッドキーを入力するときに、バックティックを押してからスペースバーを押すことで、Vimにバックティックを受信させることができます。マークaに行きたい場合は、と入力し`␣aます。 その余分なスペースを打たずにマークにジャンプする方法はありますか?副作用はありませんか?

1
括弧のマッチングを複数のウィンドウに強制的に表示できますか?
深くネストされた異種構造の長いリストを含むソースファイルがあります。構造が長いので、次のことを行います。 :splitコマンドを使用して、画面を2つに分割します。 一方のウィンドウを下にスクロールし、もう一方のウィンドウを上にスクロールします。ウィンドウ1のカーソルが括弧の上にあり、他の括弧が他のウィンドウに表示されている場合、他のウィンドウの他の括弧が強調表示されます(同じウィンドウに表示されていたのと同じように)。 どうすれば2番目のステップを実行できますか?

1
テキストの長さを簡単に取得するにはどうすればよいですか?
たとえば、次の例のように、テキストの長さを確認したい場合があります。 str = 'Hello, world!' if len(str) == 13: print('Hello back to you!') 文字列の長さを知りたいのHello, world!ですが。 私が今していることは、で列番号を入力rulerformatし%c、最初の文字にカーソルを置き、最後の文字に移動し、手動で減算することです。 しかし、これはかなり厄介です。たとえば、ルーラーの仮想モードでの選択の長さは欲しいのですが、私が見る限り、これに対する選択肢はありません。 これはできますか?または他の簡単な方法で?

2
HTML属性のスペルをチェックするにはどうすればよいですか?
ほとんどの場合、Vimのスペルチェック機能は優れています。ほとんどの言語では、コードをリテラルやコメントと区別するのに十分なほどスマートです。ただし、HTMLスペルチェックに問題があります。 <div title="text with mistaek #1" data-text="text with mistaek #2">text with mistaek #3</div> 上記の例でdivは、内部の間違いのみが強調表示されています(#3)。少なくとも、 -関連するすべての属性が確認され持っている素晴らしいことだtitleとdata-*理想的には、 -属性の設定可能なリストを。 構成またはVimScriptを介して実現できますか?プラグインも機能しますが、理想的には、さまざまHTMLなファイル(たとえば、ASP .NET MVC cshtmlファイル)に対して構成可能である必要があります。

1
*および+レジスタのカスタムコマンドを定義する
このxterm_clipboard機能を備えたVimのビルドを使用している場合、システムクリップボードのコンテンツは+レジスターから入手できます。 私が使用しているビルドにこの機能がない場合、"+システムクリップボードを取得および設定するために、registerにカスタムプログラムを呼び出させることができますか(xsel -boおよびxsel -bi、または同様にxclip)?同様にして"*、コールへxsel -poとxsel -pi。 ポイントは"+p、機能が利用可能かどうかを心配することなく、何かのようにタイプできることです。タイピングは、:r !xsel -b<Enter>私が探しているものではありません。私は仕事に同じキーストロークをしたい、と私はペーストが「真」のレジスタのために利用できるものをフォローするバリアントたい(P、gp、...)。 おまけ:他のレジスタ名にカスタムコマンドを定義できますか?

2
折りたたみが失敗する:vimは折り目を見つけることができません
私はいくつかのPHPコードを折りたたむことを試みています、そして私はポストの終わりに折りたたむことを試みているコードのいくつかの縮小版を含めました。 以下のvimコマンドを試しましたが、以下のexコマンドのみが機能します。ex以外のコマンドは機能せず、ステータス行に白地に赤のメッセージが表示されます。折り目が見つかりません。 :help folding :help fold-commands :help foldmethod :set foldmethod=syntax zi - toggle folding zj - move to top of next fold zk - move to bottom of previous fold za - toggle current fold open and closed zo - open current fold zc - close current fold zA - …

4
中央揃えのテキストを含む80カラム幅のコメントヘッダーブロックを追加する
なんらかの理由で、コードを次のようなヘッダーで区切られたサブセクションに分割することがよくあります。 ################################################################################ #################################### LOAD ###################################### ################################################################################ これらは#、中央にタイトルが中央に配置された3つの80列幅の行です。これまでのところ、vimでこれらを生成する簡単な方法を見つけていません。 私は通常、やることの線に沿って何かで80i#、その後、yypp私の3行を与えるために、その後私は真ん中に移動し、テキストを追加する必要があります。私は通常置き換えでこれを行うが、ヘッダの内部をセンタリングしません置き換える#... #だから私はの過剰削除#「手動だが。 テキストを中央の行の中央に配置するにはどうすればよいですか?そして、この結果を達成するためのより速い方法は何でしょうか?

1
試合内でより短い試合を好む正規表現?(これは貪欲でないよりも複雑です)
バッファ内であいまい検索を実行するためのスクリプトを作成しようとしています。主なアイデアは、何らかの入力を取り.\{-}、すべての文字のペアの間に挿入することです。たとえば、にfooなりf.\{-}o.\{-}oます。 これはかなりうまく機能しますが、理想的ではない多くの一致が生じます。あいまい検索では、最短の一致が最初に得られると思います。次の例について考えてみます。 public void put() put(so、p.\{-}u.\{-}t)のあいまい検索を実行すると、文字列全体に一致しますpublic void putが、putその一致内で短い方が便利です。 貪欲でない演算子は、早く終了する一致を見つけるのに適していますが、同時に開始する一致を優先できるものが必要です。概念的には、両方向で貪欲ではないはずです。これは可能ですか?


2
`gq`が折り返す列を設定しますか?
デフォルトでgqは、移動コマンドで使用すると、移動コマンドで記述されたテキストが79列にハードラップされます。(私はvi/に比較的慣れてvimいないため、正しい用語がわかりません。)その列数を構成して、代わりに異なる数の列で折り返すことができますか? たとえば、次のテキストがあるとします。 This is text for illustration. 折り返し列を29に構成して、カーソルが行内にあり、実行gqipすると、次のように変換できるようにしたいと思います。 This is text for illustration. Ubuntu GNOME 17.04でgVimを使用しています(違いがある場合)。 編集:私は制限を超えても大丈夫な場合があるため、他の部分に影響を与えずに、テキストの特定のセクションを指定された行の長さに手動でラップする方法を探しています。前の例を拡張すると、ドキュメントが次のようになっているとします。 This is text for illustration. This is some other text for illustration. そしてgqip、最初の行にカーソルを置いて実行します。 This is text for illustration. This is some other text for illustration. 次に、その下の新しい行に入力を開始した場合、その行が同様に制限の影響を受けないようにします。 私のユースケースはLaTeX文書を書くことです:散文の段落をオンデマンドで特定の数の列にラップできるようにしたいのですが、長い方程式やテーブルを書いている特定のケースでは、それらの行に制限より長く滞在します。
9 wrapping 


1
ビジュアルブロックの選択を独自の行に貼り付けます
私が何をしたいのかをどう説明するか本当にわかりません。基本的には、ビジュアルブロックモードを使用してテキストの領域を選択し、長方形ではなく「行のコレクション」として貼り付けたいと思います。 a b c d e f g h gg0<c-v>Gy長方形を押した後a/c/e/g、デフォルトのヤンクレジスタにあります(名前を忘れました)。 次に長方形pを貼り付けると、次のようになります。 aa b cc d ee f gg h それが通常の視覚的な選択であるかのように、それ自体で行のグループに長方形/視覚的なブロック選択を貼り付けることが可能かどうか疑問に思っています。 a c e g a b c d e f g h

5
vimrcのset formatoptionsは無視されます
挿入モードでEnterキーを押すと、Vimは自動的にコメントを続行します。 ただし、通常モードで「o」を押してコメントの末尾の下に新しい行を挿入した後、コメントを続けたくありません。 オプションoをmyから削除する必要があることを読んだformatoptionsので、vimrcファイルの最後に次の行を挿入します。 set formatoptions-=o しかし、何も変わっていません:set formatoptions。vimのisideから実行すると、formatoptionsがであることがわかりますcroql。 「o」を取り除くにはどうすればよいですか? 編集: 佐藤桂のコメントで指摘されたいくつかのステップを踏みました: ソリューションは:verb set fo、formatoptionsが最後に変更された場所を確認するための実行から始まります。 出力はverb set fo次のとおりです。 formatoptions=croql Last set from /usr/share/vim/vim73/ftplugin/vim.vim

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