Vi & Vim

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

3
コマンドラインからvimを起動して、\を含む特定のコマンドを実行するにはどうすればよいですか?
私の~/.vimrc場合、ほぼ次のように定義されたコマンドがあります。 nnoremap <expr> <Leader>n ':new ~/Notes/' . strftime('%F') . '-' ファイル名に現在の日付を含むノートファイルを作成するために設計されています。キーバインドは、コマンドラインにカーソルを置いたままにして、メモのトピックを入力してを押すように設計されていますReturn。 これは、vim内から機能します。ただし、vimを開いてこのコマンドを起動するために使用できる端末コマンドも指定しようとしています。私はもう試した: vim -c '\n' (私のリーダーはデフォルトのに設定されていますが\、変更しない方がいいでしょう) ただし、これは機能しません。代わりに、コマンドラインの処理中にエラーが検出されました。E10:\の後に/ 、? または&。これがvimのバグなのか、何か間違っているのかわかりません。私も試しました: vim -c '<Leader>n' しかし、これは与える:E488::後続の文字:コマンドラインの処理中にエラーが検出されたNキーを押して続行するために、コマンドを入力するか、または入力します。 私が望むものを達成する方法はありますか?

2
ペアのバランスを崩さずに自動的にペアを削除
私は、挿入モードでは、ことができます、ということVIML機能を書いています<BS>(ペアの開口部を通じて[、{それはカーソルの後に次の文字である場合(ペアの閉塞部を削除するなど、)のような多くの自動ペアをおよびvim-autoclose)。不均衡なペアがある場合、ペアの終了部分は削除されないため、この関数は異なります。 例: 形式は<initial> => <result-after-backspace>、カーソルがの前にある場所|です。 ((|) => (|) ((|)) => (|) (|) => | (defn => (defn (|) |) どうすればペアをアンバランスにするかどうかを判断してから、最後のペアを削除できますか? 自動ペアとvim-autocloseの両方をテストしました。両方のプラグインを使用すると、ペアの終了部分は常に削除されます。

1
非トップレベルのPython関数定義に移動するためのモーション
私のようなものを探しています[[(または[]、]]、][)非トップレベルの関数定義の代わりに、最初の文字の最上位のクラスや関数の定義に次の行で動作しています。 class Foo(): def __init__(self): pass def baz(self): #jump from here... pass def box(self): #... to here without searching or... pass biz = 123 def bar(): #... without going straight here pass デフォルトでは、vimは行の最初の文字から始まる変数の定義やその他のものを無視するようですが、クラスメソッドを調べているときの唯一の手段は、を検索することdef XYZです。

1
編集された行に対してのみクリーンアップコマンドを実行できますか?
以下の質問で詳述されているようなクリーンアップタスクを参照します(これに限定されません)。 ひどくインデントされたコードの再インデント ファイルのすべての行から末尾の空白を取り除く最も簡単な方法は何ですか? 実際に変更されたファイルの行のみにこれらのコマンドを適用する方法はありますか?これは、ソースコードを編集した後の実際の変更に焦点を合わせた差分出力を維持するためです(潜在的なコードレビューアーは、ファイル全体のクリーニングに関連する変更によって混乱しないでしょう)、新しい書式設定の問題は発生しません。

7
Vimには隠された「イースターエッグ」やジョークはありますか?もしそうなら、どれ?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 5年前休業。 ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 Vimが「イースターエッグ」やジョークを隠しているという噂を聞いたことがあります。これは本当ですか?彼らは何ですか?

2
あいまいなファイル拡張子に対して正しいオートコンプリートを取得するにはどうすればよいですか?
私は探索的プロジェクトの一部としてPrologファイルを編集してい.plます。作業しているファイルの一部には、Perlファイルによって共有される拡張子があります。という名前のPrologファイルで作業するときはいつでも[somefile].pl、VimはPrologではなくPerlの構文強調表示とエラー検出を提供します。Perlの構文強調表示を完全に無効にしたり.pl、Prologとして認識されるように強制したりできますが、問題を修正するためのより独裁的な方法がないかどうか知りたいです。プログラムで構文の強調表示を設定する方法、または何らかのキーの組み合わせを使用して、PerlファイルではなくPrologファイルを編集していることをVimに伝える方法はありますか?

2
ファイルの一部を調達する方法
たとえば、vimrcwith :so %やでファイルを調達できます:so <filename>。しかし、ファイルの一部のみを調達する必要がある場合はどうすればよいですか。ファイルの一部を視覚的に選択して:h vソースを取得する方法が必要です。ちょっとemacsのようなM-x eval-region

2
ターミナルウィンドウでmakeからのエラーをキャプチャする方法
Vim 8.1のリリースノートは、ターミナルウィンドウで実行中のmakeからの出力をquickfixリストにフィードできることを示しているようですが、詳細な説明は見つかりませんでした。これを自動的に行う方法はあり:caddbufferますか、それとも手動でクイックフィックスリストに追加する必要がありますか?

1
Neovimに病原体をインストールする方法?
私は病原体がnvimで機能することを読みました、私はvimのインストールプロセスに従ってみました: mkdir -p ~/.vim/autoload ~/.vim/bundle && \ curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim .vim / bundleパーツの変更: mkdir -p ~/.vim/autoload ~/.local/share/nvim/bundle && \ curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim 私のinit.vimは: execute pathogen#infect() set guicursor= set clipboard+=unnamedplus nvimを起動すると、次のようになります。 E117: unknown function: pathogen#infect() E15: invalid expression: pathogen#infect()


4
NeovimのMarkdown:どのプラグインがconceallevel = 2を設定するか?
私はこれまでで最も煩わしいことを体験しています。マークダウンファイルを編集すると、デフォルトでアスタリスク文字が非表示になります。 開いているバッファに設定すると:set conceallevel=0、アスタリスクが正しく表示されinit.vimますが、このconfをファイルに入れても機能しなくなります。 それを解決するには?さらに重要なのは、どのプラグインが私の設定をオーバーライドするかを知る方法はありますか? ありがとうございました。

2
現在の行にテキストを追加するにはどうすればよいですか?
私は現在vimscriptを理解しようとしていて、そのappend()機能を偶然見つけました。ドキュメントには、式を追加する行を指定できると記載されているので、試してみました。 :call append(line('.'), Foo()) Foo() 文字列を返します。 奇妙なことに、文字列は現在の行の次の行に追加されます。だから私はline('.') - 1、現在の行の上にある行に追加されることを確認するためだけに試しました。 現時点では、私は驚き、混乱し、言葉を失っています。 誰かがこれについていくつかの光を当てることができることを願っています。
8 vimscript 

2
変数付きの `set`オプション
変数を使用してオプションに文字列を追加することを書き直そうとしています。元の文字列は set rtp+=~/.vim/bundle/Vundle.vim 以下は作業let方法です: let MYVIMDIR='/home/loom/foo' let &rtp .= ','.expand(MYVIMDIR).'/bundle/Vundle.vim' で書き換える方法に興味がありますset。次のコード(および他のいくつかのバリエーション)は機能しません let MYVIMDIR='/home/loom/foo' set rtp+=expand(MYVIMDIR).'/bundle/Vundle.vim' 式で変数を使用する正しい方法は何setですか?

1
neovimと通常のvimを区別する方法はありますか?
vimからneovimに移行しようとしていました。しかし、結局のところ、python3サポートを必要とするプラグインがいくつかあり、neovimパッケージはデフォルトでpython3でビルドされません(私はubuntuにいます。ウェブサイトの公式ドキュメントに従ってneovimパッケージをインストールしてください)。最後に、あきらめました。複雑に見えます。 しかし、今私が直面している問題は、vimに戻す必要があることです。主な違いは、vimディレクトリへのパスです。neovimではパスは~/.config/nvim/、vimではパスは~/.vimです。 vimrcのほとんどの部分を変更しないでおく必要があります。そこで、条件付きステートメントを使用して、現在のvimがneovimか通常のvimかを判断したいと思います。 とにかくこれを達成する方法はありますか?

1
<ctrl-h>は何をしますか?
(vim全体に慣れるために)vimでコントロールキーを調べていただけで、&lt;ctrl-h&gt;を押したときに正確に何が起こるかわかりません。 私は(モッド)vimの中では、&lt;Ctrl-H&gt;を使用したときので、それだけで左に1を行く、しかし、私は行の最初の列にいる時、それは代わりに前の行に移動します。これで、この機能はスクリプトで非常に役立ちます。 ただし、(でvim -u NONE)変更されていないvimを使用すると、基本的にはです。つまり、行の変更は行われません。 :help ctrl-h 知っておくと便利なnetrwについて説明しているため、まったく役に立ちませんが、通常モードのショートカットに興味があります。 だから私の質問は: modded vimで&lt;ctrl-h&gt;キーを変更した設定は何ですか? &lt;ctrl-h&gt;の​​反対のことはありますか。つまり、右に移動し、最後の列にある場合は、次の行にスキップします(ある場合)

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