Vi & Vim

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

2
ホストウィンドウのサイズが変更されたときにペインのサイズを変更する
vimdiffをgit diff / mergeツールとして使用するのが好きです。問題は、ホストターミナルウィンドウのサイズを新しいサイズに変更したときです。2つの分割ペインのうち、左端は同じ幅のままで、右端はウィンドウサイズ全体に拡張されます。 ウィンドウのサイズを変更した後、分割ペインを同じ幅にするコマンドはありますか?または、ペインを常に同じサイズにする設定ですか?私は調べました:set equalalwaysが、私が求めていることをしているようには見えません。
16 split  vimdiff 

1
文字列リテラルを別の言語として扱う
文字列がWebページに挿入されるHTMLのスニペットであるJavaScriptファイルがいくつかあります。VimはJavaScriptで構文の強調表示を実行し、引用符で囲まれた文字列を強調表示します。実際には、強調表示を超えているようです。引用内では、vimは<、タグを開始するタグと、タグを>使用するときに終了するタグを一致させません%。文字列リテラルに括弧のようなものが存在しないと仮定しているようです。 文字列リテラルを別の言語のコードとして扱う必要があることをvimに示す方法はありますか?

3
Vimウィンドウでインタラクティブシェルを発行できますか?
外部コマンドを実行できること、:!または:r!オプションでその出力をテキストに挿入できることを知っています。実行することもでき:!sh、終了するまで生存するシェルを生成しますが、シェルがアクティブな間、Vimは「スリープ」状態になり、アクセスできなくなります。しばらくVimに戻りたい場合は、シェルを終了し、新しいシェルを作成する必要があります-あまり便利ではありません。 私はVimを懸濁させて、反対の端にシェルにアクセスすることができ^Z、スルーVimの仕事を管理しbg、fgそしてjobs。これは理にかなっていますが、長期的には非常に面倒です。使用Screen可能であれば(使用できない場合が多い)、ウィンドウマネージャーの複数のウィンドウを開きます(そして、sshを使用して各ホストから順にホストをターゲットにし、リモートホストでvimとシェルの両方を使用します)。 Vimでシェルセッションを開いて、たとえば(内部)ウィンドウの1つに保持したり、シェルセッションに切り替えたり元に戻したりすることが許可されている場合、これが最も適切です。このようなことは可能ですか?

2
ファイルのサイズと種類に応じて構文の強調表示を無効にする
多くの場合、vimを使用してさまざまなXMLファイルを編集する必要があります。vimはサイズが大きく異なります-数百行の構成ファイルから最大2GBの実稼働データファイルまで。巨大なファイルを扱う場合、構文の強調表示を有効にすることはもちろん非常に悪い考えです。したがって、ファイルがしきい値よりも大きい場合は無効にします。 シェルからvimを起動するときに構文が有効になる前にautocommandコマンドが実行されるように見えるため、これを直接使用して構文の強調表示を無効にすることはできませんでした: " this autocmd has no effect except for the echo: autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif 構文の強調表示をグローバルに無効にしてから、xml以外のすべてのファイルタイプに対して再度有効にし、ファイルがしきい値より大きくない場合にファイルタイプxmlに対して有効にすることができるという回避策を見つけました。 syntax off autocmd Filetype * syntax off autocmd Filetype * if &ft != 'xml' | syntax enable | endif autocmd Filetype xml …

4
貼り付けオプションを設定しますが、1つの挿入のみ
Vim 'paste'オプションを設定し、テキストを挿入して、前の値に戻す簡単な方法が必要です'paste'。 典型的なユースケースでは、自動インデントなどのアクティブな挿入モードの書き換えに関係なく、Vimの状態を変更せずに、OSクリップボードのコンテンツを文字通り挿入します。別のユースケースは、OSマクロ機能がキーストロークをVimに挿入し、リテラルテキストとして解釈できるようにすることです。 これは明らかに他のオプションに一般化されます-一般的な考え方は、いくつかのオプションを設定することですが、挿入モードを1回実行する間のみです。 基本的に_i、これを行うマクロにキーシーケンス(たとえば)をバインドしたい :set paste i…<Esc> :set nopaste ここi…<Esc>で、iコマンドと同様に挿入モードに切り替えて、コマンドモードに戻ったときにマクロを再開しますが、'paste'事前にアクティブだった場合はまだアクティブになります。これどうやってするの? 注:OSクリップボードのコンテンツは"*registerにマップされます。それが機能する場合、この'paste'オプションはあまり役に立ちません。この質問の動機付けのシナリオは、"*レジスタサポートの条件が満たされていない場合です。Vimは+xterm_clipboard機能でコンパイルされていないか、Screenなどの端末で実行されているか、SSHを介してアンビエントXサーバーから隔離されています。

3
tmuxには構文の強調表示はありません
tmuxiTerm 2 にインストールしました(ビルド3.0.13)で実行するvimとtmux、構文の強調表示は次のようになります。 ただし、tmuxの外では、構文の強調表示は問題ありません。 私の$TERM内側と外側のtmuxはxterm-256colorです。私も追加しました set -g default-terminal "screen-256color" で.tmux.confこれを追加しました set t_Co=256 set t_AB=m set t_AF=m if &term =~ '256color' set t_ut= endif で.vimrc。 また、tmux -2コマンドを試し、これらの質問を読みました。 tmuxモードでvimカラースキームを失う Solarizedを使用したiTerm2のvimの色が正しくない これは問題であるtmux、vimまたは私の設定? 編集: 私の.vimrcGitHubの骨子で https://gist.github.com/sohnryang/3c63397f332f2e30c7d7b2a83c3c9f52


3
vimにファイルの最後に改行を自動的に追加させる方法は?
Vimは通常<EOL>、元のファイルに1行があった場合にのみ最後の行に書き込みます。 常にファイルの最後に新しい行を書き込むようにvimを作成する方法(ファイルがバイナリではなく、まだない場合)? eolオプションをテストしましたが、期待どおりに機能しませんでした。 関連項目:テキストファイルの終わりで行末の欠落を保持しますが、反対です。そして:なぜファイルは改行で終わる必要があるのですか?

8
NeoVimでの配色の使用に関する問題
私の配色がtermvim の設定とどのように相互作用しているかを完全に理解していないため、neovimで正しく表示するための能力が妨げられています。 私の.vimrcファイルでは、問題の配色の正しい動作には設定が必要です set term=xterm set t_Co=256 これらの設定のいずれかを省略すると、配色が正しく表示されません。 正しく ない正しく ない スキームは次のようになります。 set background=dark hi clear if exists("syntax_on") syntax reset endif let g:colors_name="impact3" if exists("g:impact_transbg") hi Normal ctermfg=255 ctermbg=none hi NonText ctermfg=DarkGray ctermbg=none hi Statement ctermfg=Blue ctermbg=none hi Comment ctermfg=DarkGray ctermbg=none cterm=bold term=bold hi Constant ctermfg=173 ctermbg=none hi Identifier ctermfg=Cyan …


1
blowfishでファイルを暗号化する方法はどれくらい安全ですか?
使用:set cryptmethod=zipは安全ではないことを知っていますが、使用はどの程度安全:set cryptmethod=blowfishですか? ウィキペディアで、私はフグの暗号自体は安全であるべきだと読みましたが、これはVimの実装のセキュリティについて何も述べていません。 そして、swapfiles、backupfiles、undofiles、およびblowfish暗号化をバイパスする他の可能な方法はどうでしょうか?Vimはどれくらい安全ですか?


1
開いているタブを並べ替えるにはどうすればよいですか?
:のは、私は4つのオープンファイルがあるとしましょうfile0.txt、file1.txt、file2.txt、とfile3.txt。それらのすべてをタブとしてこの順序で開きます。だから私のタブの順序はこれです: file0.txt file1.txt file2.txt file3.txt 次に、代わりにタブを並べ替えて、それfile2.txtが前になるようにしたいとしましょうfile1.txt: file0.txt file2.txt file1.txt file3.txt それ、どうやったら出来るの?現在のタブを左または右に移動したり、現在開いているタブを並べ替えたりするVimコマンドはありますか?

3
neovimターミナルペインに入るときに挿入モードに入る方法
neovimのターミナルペインから簡単に移動できるように、次のマッピングがあります。 tnoremap <C-h> <C-\><C-n><C-w>h " Workaround since <C-h> isn't working in neovim right now tnoremap <C-w>h <C-\><C-n><C-w>h tnoremap <C-j> <C-\><C-n><C-w>j tnoremap <C-k> <C-\><C-n><C-w>k tnoremap <C-l> <C-\><C-n><C-w>l 唯一の問題は、ターミナルペインに戻ったときにを押しiて挿入モードに戻る必要があることです。ターミナルを実行しているneovimペインに移動するときは、常に挿入モードにする必要があります。これを達成する最良の方法は何ですか?

3
レジスタ/複数のレジスタを完全にクリアするにはどうすればよいですか?
私はかなり頻繁に使用する:registers(の役割まさに、私がどこに置くものを忘れ、すべてのレジスタの内容を表示するコマンドを"*、".、"%、などです)。 特に、"オプションでオプションを設定したためviminfo、vimセッション間でレジスタが保持されるため(一般的には短期的には)、:registersリストは時間とともに長くなり、より面倒でいっぱいになります本当に古いもので。 これまでのところ、これを修正することがわかった唯一の方法は、「古い」レジスタの内容の一部を手動で編集することです~/.viminfo。これを行う必要vim -u NONEがあり、少し面倒です。 すべてのレジスタを消去する、または特定のレジスタを消去するよりクリーンな方法があり、:registersリストに表示されなくなりましたか?

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