Vi & Vim

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

3
:edit {file}が:Explore中に現在のディレクトリを使用するようにする
私はよくを使用して、開いているファイルディレクトリからファイルシステムを探索する:Exか:Sex、ディレクトリを渡してvimを呼び出してファイルシステムの探索を開始し、ファイルを開きます。 いずれの場合でも、ディレクトリツリーをナビゲートしているときに、:edit {file}コマンドを使用して新しいファイルを開くと、vimが実行された現在のディレクトリからの相対パスが常に使用されます。そう: ~# vim . -> navigate to Development/ -> open a file :e <tab> will complete path from home dir または: ~# vim Development/ -> open a file :Sex :e <tab> will complete paths from Development/ (自動またはコマンドを使用して)ファイルシステムをナビゲートしているときにvimの現在の作業ディレクトリを現在選択されているディレクトリに変更することは可能ですか?

1
数字のプレフィックスが付いたホットキーで何度も機能を実行することは可能ですか?
exコマンドを実行する前に数値の接頭辞を入力した場合、それが適用される規則は、行範囲全体で操作を準備するようにコマンドを設定することです。ドキュメントで説明されています 行数 変更する行数がわかっている場合は、番号を入力してから「:」を入力できます。たとえば、「5:」と入力すると、次のようになります。 :.,.+4 これで、使用するコマンドを入力できます。範囲「。」を使用します。(現在の行) "。+ 4"(4行下)まで。したがって、5行にまたがっています。 今私が扱っているのは私のカスタム関数です、これはこれです: function! MyAmazingEnhancedDot() if v:hlsearch == 1 :normal! .n else :normal! .j endif endfun これは、一連の行または一連の検索一致に対して操作を繰り返すことを含む、反復的なタスクを合理化する方法にすぎません。 この機能はホットキーにバインドされています。以下のようなAlt+ .または何でも。 私の目的は、非常に強力な何かをできるようにすることです:私は入力することができるはず/varName<CR>ciwnew-var<ESC>n9<Alt+.>の10個のインスタンス名の変更を達成するためvarNameにしますnew-var。 これを行うと実際に何が起こるかというと、名前の変更が行われず、9行が.列0の-saved編集操作で操作されているということです。 私はVimが私のキーストロークを次のように解釈しているとしか想定できません:.,.+8 normal! .n。 ガラスの半分いっぱいの側で:normal! .jは、バインドのケースが実際に機能しjます。これは、影響のないモーションはこの状況では影響がないためです。(私はまだjそれが数字の接頭辞のないインタラクティブなユースケースで動作させるために必要です)。 それで私の質問は、Vimがバインドに適用する行拡張動作をどのようにオーバーライドできるかということです。数値接頭辞を引数またはそのようなものとして読み取ることができれば素晴らしいと思います。

1
vimrcマッピングで長いマッピング行をいくつかの短い行に分割する方法
私は例えば扱うために非常に長いvimrcマッピングを持っています nnoremap <space>e :exe "!tmux send-keys -t.- 'cd $TEST' Enter"<Cr> :exe "!tmux send-keys -t.- 'source $TEST_NT/bin/activate' Enter"<Cr> この長い行をいくつかの短い行に分割して、1つの画面にすべてを表示する方法 次のようなスタイル: nnoremap <space>e :exe "!tmux send-keys -t.- 'cd $TEST' Enter"<Cr> :exe "!tmux send-keys -t.- 'source $TEST_NT/bin/activate' Enter"<Cr>

5
VIMで大きなソースファイルをどのようにナビゲートしますか?
まず、私はパフォーマンスについて質問していません。私は、精神的に、私が慣れていない大きなCソースコードファイルに入るのに役立つ何かを探しています。例を挙げましょうreadelf.c。このファイルは20,000行です。私はコードを読んでそれを理解することができますが、私はそうではありません。これは、Cでの私の経験においてのみ問題になります。何らかの理由で、Cではファイルサイズが非常に大きく、readelf.cこれだけではありません。Cファイルを仮想化して構造化プロジェクトのような正気なものにすることができるものはありますか?私はそれが多くを求めていることを知っていますが、誰かがそのようなことをしたであろうすべてのCコードが存在しているように見えます。 私のラップトップの端末は最大50行を保持できます。vimは、10000行を超え10万行未満のファイルをナビゲートするためにどのツールとプラグインを提供していますか?

1
大括弧の一致
私はvimを使用してLaTeXコードを編集していて、次のような間隔を頻繁に書いていますが(a,b]、これは他のvim機能を混乱させます。例えば、 ジャンプ%:のようなものがある\phi((a,b])場合、決勝)は2番目に一致(し、コードの後のいくつかの閉じ括弧は最初に一致します。 ]]開いている区切り文字を閉じる機能(vimtexに固有のものか、単なるvimの機能かはわかりません)があり、これにより、正しく動作しなくなります- )以前の行からを閉じようとします。 tsd/ csd/ dsd/変更/削除、周囲の区切り文字を切り替えるvimtexの特徴は仕事を(私は考えてはいけないcsdとdsdのvim-サラウンドの拡張であるが、私はよく分かりません)。特に、間違った区切り文字を選択するか、何もしません。 現在)、これを緩和するためにコメントにsを入れています。これにより、後でファイルの括弧が間違って一致する問題が解決されますが、同じ行での一致は機能しません(tsdvimtexのようなものが正しく機能しません)。 この種の問題に対するより良い解決策、または標準的な解決策はありますか?理想的にはこれ[a,b)も対処します。

3
コマンドのオートコンプリートから戻る
タイプ:e foo/**/foo*.jsしてタブを押すと、vimは* sをファイルパス内のすべての可能な候補で置き換えます。十分に具体的ではないことに気づき(オートコンプリートには結果が多すぎる)、オートコンプリートの提案から戻って:e foo/**/foo*.js 私のワイルドメニュー設定は: set wildmenu set wildmode=longest:full,full,full set nowildignorecase タブを押す前に持っていたものに戻るためのキーはありますか?

2
vimで行の括弧の終わりに行く/行の括弧を抜ける方法は?
/programming/11037825/vim-get-out-of-parenthesis-brackets-etcで回答された解決策を読みます。それはA行末にあなたを連れ去るコマンドに他なりません。 しかし、私の要件は別のものです。私が含んでいるファイルがあるとしましょう- x = (3+5)/(2+1); カーソルがオンのときにカーソルを最初または+上に移動したいが、オンにしたくない場合(「文字の上」の代わりに「文字の後」を検討できます)。/);

1
奇妙なvim / xtermの相互作用:ファイルを開いたときの `" `レジスタの自動挿入
これは私を怒らせています。XTerm(330)と最新のvim 8.0.1365(FreeBSD上)を使用しています。 時々、常にではないが、5分の1にvimでファイルを開くと、面白い行が行1の上に挿入されます。多くの頭を掻いた後、前のセッションで最後に削除した行であることに気付きました。つまり、""P("レジスターを貼り付ける)が実行されているように見えます。 さらに調査した結果、これ*sunKeyboard: trueはXTermリソースで設定した場合、およびなどのレンダリングされたフォントを使用した場合にのみ発生することがわかりました-fa "DejaVu Sans Mono:size=24"。(私はあなたがそれが奇妙だったと言いましたね?)プラグインがいたずらをするのを避けるために、ディレクトリは.vimrcありませ.vimん。 次のコマンドを使用して、効果をいくらか再現できます。 #!/bin/sh rm -f .viminfo; echo inserted >bar; echo x >baz vim -c d -c wq bar echo '*sunKeyboard: true' > XTerm export XAPPLRESDIR=$PWD for i in 1 2 3 4 5 6; do xterm -fa "DejaVu Sans Mono:size=24" -e vim baz …

2
Pythonを使用してVIMプラグインで新しいコードを開発することの欠点
私が使用するvimプラグインの1つで、今後はpythonとvimscriptの使用を検討しています(https://github.com/python-mode/python-mode/issues/813#issuecomment-344754563)。 Pythonを使用してVIMのプラグイン(https://dzone.com/articles/how-write-vim-plugins-python)を記述できることを理解しています。vimディストリビューションに+python/ +python3があれば、プラグインは機能するはずです。 私はVIMのプラグインをまだ作成していませんが、PythonでのPython開発用のオープンソースVIMプラグインの作成は、VimLで作成するよりも優れていると思います。ソリューションを提案したが、VimLを知らず、それを学びたくないというユーザーが複数いることに気づくでしょう。彼らはすでにPythonを知っており、Pythonで作業しているからです。したがって、今後Pythonで新しいコードを書くことで、より多くのユーザーを獲得し、より多くの貢献者を獲得して、より多くの価値を生み出すことができます。 質問 PythonとVimLを使用してVimプラグインを作成する欠点は何ですか?(このプラグインを使用するすべてのユーザーがPythonを開発するために使用する予定であるため、すでに+python/を持っていると仮定しましょう+python3)

2
lsからbufferにジャンプする方法は?
からバッファ番号を入力してバッファにジャンプする方法はあります:lsか? Press ENTER or type command to continueつまり、このコマンドで、たとえばを押した場合2、何も実行されないと予想されるのはなぜですか? 明らかに、インストールするプラグインはありません.vimrc。少なくとも1つの小さなスクリプトをインストールします。 ありがとう。

1
Python 3.6でvimをコンパイルしようとしています。私の設定ディレクトリはどこですか?
Linuxに関しては、私は少し初心者ですが、最近使い始めたばかりです。 しかし、私はラテックスライブプレビューを使用していて、Pythonコンパイルされたvimが機能する必要があるため、vimをpythonでコンパイルしようとしています。私はこれらの手順に従っています:https : //github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source パート3では、Pythonバージョンの構成を見つけるように言っています/usr/lib/python3.6/config 。_sysconfigdata_m_linux_x86_64-linux-gnu.py 私はconfigディレクトリを作成するはずですか、それともすでにそこにあるはずですか?

2
vimrcの包括的なドキュメントはありますか?
の可能なコンテンツの完全なドキュメントを見つけようとしています.vimrc。 これが私が試したものです: Google検索。たくさんの例、ドキュメントなし。 公式ドキュメント man vim :help vimrc このベータ版SEを検索 Stackoverflowの検索 たとえば、このサイトには「上位50のvim構成オプション」がリストされており、最後にはさらに330あると述べていますが、場所は明記していません。 ソースコードを手探りで探すのではなく、vimrcの内容が何であるか/できるかについての包括的なドキュメントはありますか?
7 vimrc 

1
折りたたみを使用してドキュメント内の表示行の数を数えますか?
foldlevel新しく開いたドキュメントを自動的に設定して、できるだけ多くのドキュメントが画面に収まるようにするプラグインを作成したいと思います。(つまり、短いドキュメントを完全に開いた状態で開き、長いドキュメントを開くとほとんど折りたたむようにします。) 現在の折りたたみ状態または特定の折りたたみレベルを前提として、ドキュメントに表示される行数を報告するvimの組み込み関数はありますか?(つまり、閉じた折り目は1行としてカウントされますが、表示するために下にスクロールする必要がある行もカウントされます。)

1
マッピングでxmapまたはvmapを使用する必要がありますか?
xmapビジュアルモードのみのマッピングを作成するのに対しvmap、ビジュアルモードと選択モードの両方にマッピングを作成します。 私が理解している限り、選択モードの目的は、テキストが選択されたときに他のすべての非モーダルエディターと同じようにVimを動作させることです。 選択モードでは、入力したテキストを挿入モードであるかのように文字どおりに表示する必要があるため、選択モードでは何もマップする必要はほとんどないように思えます。 だから私は私のすべてのマッピングxmapでvmapはなく使用することに傾いています。これは良い/悪い考えですか?

1
vimがマクロの最後に^ Jを追加するのはなぜですか?
カーソルの下の単語をgrepするのに役立つ短いマクロを作成しました。これは私の.vimrcにあります: let @a=":! git grep ^R^W^M" しかし、vimを開いてを実行する:reg aと、次のように表示されます。 "a :! git grep ^R^W^M^J ^ Jがマクロに追加されていることがわかります。 スクリプトから^ Mを削除すると、^ Jも消えます。 ^ Jは^ Mと同様に動作するようです。つまり、^ Mが2つあるようです。コマンドの結果が見えないので、これは私が望んでいることではありません。読む前にウィンドウが点滅します。 貼り付けてからコピーすることで、スクリプトを機能させることができました。この問題は、.vimrcを使用してロードしようとしたときにのみ発生します。

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