Vi & Vim

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

5
各行を11回コピーし、各行の最後の「1」を2〜12に増やす方法
ファイルに複数の行があり、各行を11回コピー(各行を12行に変換)し、各行の最後の "1"をインクリメントして、12行に "1"から " 12 "、" 1 "が最初にあった場所。各行に「1」の他の出現がある可能性がありますが、増分したい「1」は常に各行の最後の出現になります。別の見方をすると、最後の「1」は常に「/ nt /」の後ろにある-「/ nt / 1」のように(そして、それは常に各行で「/ nt / 1」の唯一のオカレンスになります) 。 したがって、たとえば、私が持っている場合: 1stlineblahblahblah/nt/1blah 2ndlineblahblahblah/nt/1blah 3rdlineblahblahblah/nt/1blah それを次のように変えたいです。 1stlineblahblahblah/nt/1blah 1stlineblahblahblah/nt/2blah 1stlineblahblahblah/nt/3blah 1stlineblahblahblah/nt/4blah 1stlineblahblahblah/nt/5blah 1stlineblahblahblah/nt/6blah 1stlineblahblahblah/nt/7blah 1stlineblahblahblah/nt/8blah 1stlineblahblahblah/nt/9blah 1stlineblahblahblah/nt/10blah 1stlineblahblahblah/nt/11blah 1stlineblahblahblah/nt/12blah 2ndlineblahblahblah/nt/1blah 2ndlineblahblahblah/nt/2blah 2ndlineblahblahblah/nt/3blah ... 私は以前にコマンドを見つけました: :for i in range(0,12) | put ='1stlineblahblahblah/nt/'.i.'blah' | endfor この目的のために機能しますが、各行に対してこのコマンドを手動で実行し、各行を自分で入力(またはコピーして貼り付け)する必要があります。すでにファイルにある行を取得し、各行を12に変換する1つのコマンドを実行する方法はありますか。 これで私を助けることができる人に前もって感謝します。また、これが2番目の質問であることにも注意したいと思います。最初の質問に対して、いくつかの迅速で効果的な解決策が得られたことを嬉しく思います。

5
ファイルの2つのパターン間のコンテンツを置き換える方法は?
ファイルの形式は次のとおりです。 <common> fitnes=0 genetic=1 method=0 </common> <inputs> foo=bar bar=foo </inputs> <limits> balance=200.00 </limits> との間にあるものをすべて削除<inputs>し</inputs>(パターンit-selfを除く)、別のファイル(例:)のコンテンツに置き換えますfoo.txt。言い換えるとfoo=bar、bar=fooと行が別のコンテンツに置き換えられます。 おそらく、次のように、複数行の一致を削除する方法に似ています。 :g/<inputs/,/inputs>/d しかし、別のファイルのコンテンツを挿入するために何を置き換える必要があるかはわかりませんdが、一致するパターンを保持したいと思います。 同様の方法は、htmlタグの内部コンテンツを削除することです。 :/<inputs>/norm vitd しかし、ファイルのコンテンツをそれにどのように追加するかわかりません。 ライナーは別のスクリプトの一部になるため、理想的には1つのライナーを見つけようとしています。 どうすればそれを達成できますか?

2
exコマンドを使用して、2つの行が同一かどうかを確認しますか?
私はこの質問を見ていて、純粋に POSIX を使用sedする私の答えを どのように実装できるのか疑問に思いました。ex 秘訣はsed、ホールドスペースとパターンスペースを比較して(とG;/^\(.*\)\n\1$/{do something})が完全に等しいかどうかを確認することは できますが、ではそのようなテストを行う方法がないことですex。 Vim Yでは、最初の行をアンクしてから入力 :2,$g/<C-r>0/dして、指定したことをほぼ実行できます。ただし、最初の行に非常に単純な英数字のテキスト以外が含まれている場合、行は正規表現としてダンプされるので、これは実際に不自然になります。 、比較のための単なる文字列ではありません。(最初の行にスラッシュが含まれている場合、行の残りの部分はコマンドとして解釈されます!) したがってmyfile、最初の行と同じであるすべての行を削除したい場合(ただし、最初の行は削除しない場合)は、どのように使用できexますか?それについて、私はそれをどのように使用できviますか? 別の行と完全に一致する行を削除するPOSIXの方法はありますか? おそらくこの架空の構文のようなもの: :2,$g/**lines equal to "0**/d

2
WindowsでPythonプラグインを使用するにはどうすればよいですか?
python 2.7.11とpython 3.5.1(両方とも32ビット)がインストールされた64ビットのWindows 7を使用していて、vimをpython / dynとpython3 / dynでコンパイルしましたが、次のエラーが発生し続けます。 :py print "hello" E887: Sorry, this command is disabled, the Python's site module could not be loaded ただし、以下はすべて正常に機能します。 C:\python27\python -c "import site;" そして :py3 print("hello") これは私のvimバージョン情報です: VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan 29 2016 11:58:41) MS-Windows 32-bit console …

2
qt-neovimで最大化されたGUIを開始する方法?
私はneovimをqt-neovim(linux arch)と共に使用しています。gvimでは、次のようにして最大化されたウィンドウを起動できます。 if has("gui_running") set lines 999 columns 999 endif それは今のところ機能していません。成功せずにifを削除してみました。それを達成する方法はありますか?
9 neovim 

4
()内のテキストを以前にヤンクしたテキストに置き換える方法は?
Fnord前にテキストをヤンクしていて、カーソルが行のにあると仮定しますB。 M:mock(Baz) ()内のテキストを以前にヤンクしたテキストに変更するにはどうすればよいですか? 現在、私はしばしば次のようにして間違いを犯します: di( 別名「内部の削除()」 SHIFT + P 削除されたテキストはレジスタに移動されるため、正確なテキストが再び残ります。 欲しい: M:mock(Fnord)

2
大文字で終わる単語と特定の文字を一致させる方法は?
lblSERINOd文のような言葉があります。単語は空白で区切られます。 dこのような単語の最後のをに置き換えたいと思いますu。したがって、たとえば次のようにlblSERINOdなりますlblSERINOu。 私は試しましたs/.*\ud /u /gが、Vimは見つけられないと言っています.*\ud。 ここの問題は何ですか?

2
なぜ.vimrcファイルをvimソース化しないのですか?
今日、私は私の.vimrc効果が出ていないことを発見しました。ほんの数時間前に大丈夫だった。 でvimを起動したとき$vim --plugin、:scriptnames何もエコーされませんでした。.vimrcファイルが読み込まれていません。(注:/etc/vimrcこの問題をデバッグするために削除されました。) それから私はグーグルを試みて、$VIMINIT不審な変数を見つけました。 の値は$VIMINIT次のとおりです。 $ echo $VIMINIT set number Vimに関するドキュメントVIMINIT: c. Four places are searched for initializations. The first that exists is used, the others are ignored. The $MYVIMRC environment variable is set to the file that was first found, unless $MYVIMRC was already set. - The environment variable …

1
バッファを開くときに「+」記号は何を意味しますか?
ターミナルバッファを垂直分割で開きたいのですが。 しようとする:vertical split terminalと、ターミナルバッファーではなく、「ターミナル」という名前のバッファーが表示されます。 私は最近:vertical split +terminal、ターミナルバッファーを開くためにできることを学びましたが、+が何をしているかを説明するヘルプドキュメントを見つけることができませんでした。 「+」はどういう意味ですか、それは端末バッファに固有ですか、それともより一般的なものですか? PS また:vertical split | terminal、同じ振る舞いをするために自分ができることに気づきました(少なくとも私は同じだと思います)。
9 buffers  neovim 

1
バッファvsタブvs引数リストvsウィンドウ
非常に多くの選択肢!とても混乱しています! いつ他のものを優先して使用すべきですか? これらはどのように相互に関連していますか? とにかく、それらの違いは何ですか? 入力したコマンドにどのように影響しますか? それらは、レジスタ、マクロ、マーク、オプション、およびコマンド履歴とどのように関連していますか? たとえば、通常のGUIプログラムのように、タブがウィンドウのサブディビジョンであるか、ウィンドウがタブのサブディビジョンであるか。 これは、:nextおよびを介してアクセス可能な複数のコマンドライン引数(arglist)にどのように関係し:prevますか? そして最後に、これらのうちどれがvi互換性があるか(ある場合)?


2
Vimはウムラウトを単語文字として受け入れません
abücdたとえばdw、前にaのようなものを含むドイツ語のテキストを書くと、単語の文字としてab解釈さüれないため、が削除されるだけです。 reStructuredTextを編集すると、 iskeyword=38,42,43,45,47-58,60-62,64-90,97-122,_ これがウムラウトがマークされていない理由を説明していますが、これがどこから来たのかわかりません。gVimを開くと、これは iskeyword=@,48-57,_,192-255 これはどこから来るのでしょうか?
9 unicode 

1
Vimで部分的なHTMLインデントを無効にする
警告:私はWeb開発者ではありません。 そうは言っても、私がHTMLを編集しなければならないまれな状況があります。そうすると、Vimの動作が気に入らないことに気づきました。設定を変更できることを願っています。 コーディングするとき、80文字で行を折り返す傾向があります。これは、HTMLタグを複数行に分割する必要があることを意味します。これが起こったときに私が欲しいのは、いくつかの賢明なインデントです。したがって、たとえば、次のコードがあり、同様にインデントしたい場合があります。 <a href="http://someverylongurl.com/foo/bar/blaz/SinwzvO.jpg"><img src="http://someverylongurl.com/foo/bar/blaz/Sinwzv0.jpg" class="ri" alt="This is an image"></a> ただし、デフォルトでは、Vimの自動インデントは、分割されたHTMLタグを、前の行から始まるHTMLタグと同じレベルにインデントします。つまり、次のような結果になります。 <a href="http://someverylongurl.com/foo/bar/blaz/SinwzvO.jpg"><img src="http://someverylongurl.com/foo/bar/blaz/Sinwzv0.jpg" class="ri" alt="This is an image"></a> 正確には、私が欲しくないものです。入力していると、常に戻ってこのようなインデントを修正しなければならないことがわかります。 私は一般的にVimの自動インデントが好きで、単にそれを普遍的に無効にしたくありません。分割HTMLタグのインデントを無効にするか変更するだけですが、方法がわかりません。 これを変更することは可能ですか? (この質問についてStackoverflowを検索してみましたが、見つかりませんでした。重複している場合は、元の質問を教えてください。) 編集:解決策はここで見つかりましたhttps://www.reddit.com/r/vim/comments/3ogbna/disabling_partial_html_indentation_in_vim/cvy8p3u 編集#2:さて、上記の解決策は問題を解決しませんでした。それはまだそこにあります。

1
「switchbuf」オプションはどのように機能しますか?
私は最近このオプションswitchbufを見つけて使用しようとしましたが、どのように機能するのか理解していないのか、それとも実際にVimで機能しないのかはわかりません。 考えられるさまざまな値について、ドキュメントでは次のように述べています。 useopen含まれている場合 、指定されたバッファ(存在する場合)を含む最初の開いているウィンドウにジャンプします。 usetab "useopen"に似ていますが、他のタブページのウィンドウも考慮します。 次にset switchbuf=useopen,usetab、新しいvimインスタンスで次のコマンドを使用しました。 最初のバッファを開く :e file1 画面を分割する :split 2番目のバッファーを開く :e file2 最初のバッファに戻ります:e file1(私も使用しました:bN) 最初のバッファに移動する最後のコマンドは、2番目の分割でそれを開きます。私がドキュメントから理解したことから、コマンドは、のおかげでバッファがすでに開いている最初のスプリットにカーソルを置く必要がありますuseopen。また、スプリットの代わりにタブを使用して同じコマンドを試しても、動作は同じです。 この動作は予期されたものですか? もしそうなら、このオプションが何をすべきかを説明できますか? 私.vimrcがデバッグしなければならないことを知らない場合、おそらく干渉することが知られている一般的な設定はありswitchbufますか?
9 vimrc  buffers  split 

2
バンドルされた「ファイルタイププラグインインデント」がタブ幅で混乱する
昨日vundleをインストールしましたが、それ以降、vimrcで構成したタブ幅は無視され、2ではなく4に戻されました。 バンドルの段落の後の次の行が原因であることがわかりました。 filetype plugin indent on 私のインデントは次のように設定されています: set noexpandtab " Make sure that every file uses real tabs, not spaces set shiftround " Round indent to multiple of 'shiftwidth' set smartindent " Do smart indenting when starting a new line set autoindent " Copy indent from current line, over to …

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