Vi & Vim

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

3
バッファを使用するより効率的な方法は何ですか?
最近、使用しているプラ​​グインの数を大幅に減らしているので、組み込みのVim機能のみを使用して回答を探しています。 たくさんのバッファーを編集しているときにワークフローの欠陥に気づいていました:バッファーを使用していて、名前を覚えていない代替バッファーではない別のバッファーに切り替えたい。したがって、使用:b#は不可能であり、コマンドで補完を使用すること:bも便利ではありません。 それをするために、私は次のことをしていました。 最初に使用:buffersして、開いているバッファのリストを取得します 使用したいバッファの番号を覚えておいてください を押しEnterてバッファのリストを閉じます 使用する:bXとX、使用するバッファの数。 このワークフローはかなり重いように思えたので、次の行をmyに追加しました .vimrc。 " Improve the navigation in the buffers nnoremap <Leader><S-b> :B<CR> command! B call Buffers() function! Buffers() execute "buffers" let buffer=input("Enter a buffer:") execute "b" . buffer endfunction これは、入力を待つ:B関数を呼び出し、:buffers最後に入力が:b続く呼び出しを行うコマンド(およびマッピング)を提供します。 それはうまく機能しますが、私はそのような関数を開発しなければならなかったことに驚いています:通常、Vimはかなり効率的なデフォルトのワークフローを持っているので、他に何も知らないバッファに切り替えるより良い方法があるかどうか疑問に思っています編集セッションですでに開かれていること。
13 buffers 


3
単語の2番目の文字を自動的に小文字にする方法は?
たくさんのテキストを入力しなければならないshiftとき、私はしばしば次のような文の最初の文字を書くときに指を押し続ける傾向があります。 [...]end of sentence. NEw sentence[...] ここで、Eof NEwは小文字でなければなりません。次に、入力する文の最初の単語の2番目の文字が大文字かどうかを検出し、小文字にする関数を作成しようとしています。重要な部分は、文章の終わりを入力している間に修正が自動的に行われることです。 これまでのところInsertCharPre、このイベントによってトリガーされる関数によってテキストを変更できないことに気付く前に、オートコマンドイベントを試してみました。 良い解決策は何でしょうか? 注これまでのところ、頭字語のような大文字の場合や、このようなことをする必要があるエッジケースに焦点を合わせる必要はありません。 編集私はこれを作成しましたが、これは完璧な回避策ではありません: autocmd CursorMovedI * call RemoveUnwantedUpper() function! RemoveUnwantedUpper() " Get the current sentence " Based on http://stackoverflow.com/a/23315227/4194289 let l:save_clipboard = &clipboard set clipboard= " Avoid clobbering the selection and clipboard registers. let l:save_reg = getreg('"') let l:save_regmode = getregtype('"') …

2
通常のコマンドを実行した後、カーソルの位置を復元する方法は?
現在の行の6列目の文字をドル記号($)に置き換える関数をコーディングしようとしていますが、カーソルを関数を呼び出す前の位置に残したいのです。 そこで、現在の列を保存し、変更を実行してから、次の関数を使用して戻ってきました。 function! DollarSplit() let col_number=col(".") "stores the current column number of the cursor normal! 6|r$ " replaces the 6th caracter in line with a $ execute col_number."|" endfunction 私はおそらくexecuteコマンドについて何かを誤解しています...または、実行したいコマンドを含む文字列を作成する必要がありますか?

4
Linux上で動作するようにWindowsでgVimを取得するにはどうすればよいですか?
私はLinuxでVimエディターを頻繁に使用していますが、今ではWindowsで使用したいと思っています。 Vim for Windowsをダウンロードしました。これはたまたまgVimです。Vimのいくつかの機能は、ビジュアルブロック、rxコマンド、その他のキーの組み合わせなど、gVim 7.4では機能しません。 Linuxの同じ/元のVimをWindowsで使用したい。そのバージョンはWindowsでも利用できますか?または、Unix形式に似た設定を使用できますか?

5
クイック検索、C ++関数に限定
私はかなり大きなC ++プロジェクトに取り組んでいます。その組織のよりイライラする側面の1つは、途方もなく大きなファイル内に配置された非常に大きな関数です。 現在の関数に制限された特定のグローバル変数または関数呼び出しのインスタンスを検索したいことがよくあります。これを達成するための合理的な簡単な公式はありますか? (私はctagsをインストールしていて、Tagbarを使用しています...これは役に立つかもしれません)



1
折り目を保存できますか?
今日、私はVimで折り畳み/展開する方法を学びました。とても便利です。 予期せず、ファイルを終了して再入力すると、作成した折り畳みが消えます(展開されます)。 弊社の大規模なプロジェクトには、かなり古くても不可欠なスティッキー(レガシー)コードブロックがたくさんあります。 ほぼ永久に折りたたむ必要があります。 ファイルの折りたたみ設定を保存するようVimに指示する簡単な方法はありますか?
13 folding 


3
一連のキーストロークを単語のすべての出現に適用するにはどうすればよいですか?
すべての単語を削除したい場合は、次のようなことをするので簡単です。 :s%/WORD//g しかしxyz、「WORD」のすべての出現に対して実行したい場合はどうなりますか?たとえば、「WORD」を含むすべての行を削除するとします。これを行うにはいくつかの方法が考えられますが、どれも理想的とは思えません。 1) /WORD そして、ddnddnddnddn...発生がなくなるまで手動で押します。ただし、これを行う行が多数ある場合、これには時間がかかります。 2) qd/WORD<enter>ddq そしてWORDが何回出現するかを推測してから、例えば: 500@d しかし、これは、A)行の束を見逃すか、B)余分な行の束を削除します。 これを行うより良い方法はありますか?
13 search  macro 


6
連続した重複をすべて削除する
このようなファイルがあります。 Move to 230.00 Hold Hold Hold Hold Hold Hold Move to 00.00 Hold Hold Hold Hold Hold FooBar Hold Spam Hold 次のようになりたいです。 Move to 230.00 Hold Move to 00.00 Hold FooBar Hold Spam Hold vimがこれをすばやく実行できる方法が必要であると確信していますが、どのように頭をかき回すことはできません。これはマクロの力を超えており、vimscriptが必要ですか? また、「Holds」の各ブロックに同じマクロを適用する必要がある場合でも問題ありません。ファイル全体を取得する単一のマクロである必要はありませんが、それは素晴らしいことです。

3
LinuxディストリビューションにViまたはVimがインストールされているかどうかを確認するにはどうすればよいですか?
デフォルトのインストール(bash、Konsole)でKubuntu 14.04を使用します。パワフルなオールキーボードのテキストエディターを学びたいと思います。Vi、Vim、Emacsのいずれかを使いました(そして、Nanoは簡単なので学びます)。BashとPythonというコマンドラインの経験が少しあるので、WindowsシステムなしでLinuxを使用するという目的で、別のスキルを追加する準備ができています。 Bashから、入力するvimか、emacsパッケージをインストールするように求められます。 入力はvi機能します。エディターを実行しているので、Viでなければならないと思いました。 しかし、スプラッシュスクリーンは、あなたがbashであること、それを呼び出すと、言うVIM Vi Improvedと、それはだというRunning in Vi compatible mode。だから今、私はそれがVimでなければならないことを理解しています。 それでvim、bashで入力してもエディターが実行されないのはなぜですか?


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