Vi & Vim

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

3
「?」で検索を開始した場合でも、「n」を先に進めるにはどうすればよいですか?または「#」?
Vimには、(少なくとも)反対方向に検索するコマンドのセットが2つあります。入力して/からパターンを入力すると、ドキュメント内でパターンが前方に検索されます。入力?してからパターンを逆方向に検索します。コマンド*と#コマンドの間に同じ関係が存在します。 私が嫌いなのは、これらのコマンドがnand Nコマンドの検索方向も設定することです。使用した後/、n文書を前方になり、N後方に行きます。を使用した後?、n後方にN進み、前方に進みます。(つまり、n常に元の検索と同じ方向に進み、常にN別の方向に進みます。) 検索を開始した方向に関係なく、どのようにnしてドキュメントを前に進み、後に進むことができNますか?

2
関数の引数を交換する
コードをリファクタリングするとき、関数の引数を交換できると便利です。 変更例: func(foo[0], bar(), baz.spam) に func(baz.spam, foo[0], bar()) 引数を左/右に交換して、関数の括弧とコンマを保持する方法はありますか? 注:それ自体が独自の引数を持つ関数呼び出しである引数を考慮する場合、これは非常に複雑にfunc(baz->spam, foo[0], bar(a, b, c))なる可能性があります。
19 macro  refactor 

8
検索が完了したら、「hlsearch」を自動的にオフにする方法は?
「hlsearch」の設定は気に入っていますが、検索が終わった後は不快です。特に、多くの一致があるものを検索する場合。私はこれをオフにすることができることを知っています :set nohlsearch しかし、これには全部で16回のキーストロークがかかり、さらに面倒なことに、次の検索のために再びオンにする必要があります :set hlsearch 検索を開始するとhlsearchが自動的にオンになり、検索が終了すると自動的にオフになる方法はありますか?たとえば、挿入モードに入るか、テキストを変更する場合、追加のキーストロークなしでhlsearchをオフにしますか?
19 search  highlight 

1
CTRL-Uの組み合わせについて
で、この答えは私が直面したCTRL-U後、関数呼び出しで使用される:と、実際の関数名の前に。 :nnoremap <buffer> <cr> :<C-U>call append('.', repeat([''],v:count1))<cr> ヘルプの内容は次のとおりです。 CTRL-U Scroll window Upwards in the buffer. The number of lines comes from the scroll option (default: half a screen). If [count] given, first set the 'scroll' option to [count]. 自分で試してみたところ、思ったとおりに機能しました。しかし、私はscrollオプションに関する部分をよく理解していませんでした。彼らはどういう意味'scroll' optionですか? また、挿入モードでは奇妙なことをします。私の知る限り、カーソルから行の先頭までをすべて削除し、結果の行と上の行を結合します。

6
行をコンマ(または別の文字)で結合できますか?
Vimの行Jとそのいくつかのバリアント(gJなど)を結合できることを知っています。Jう「インデントを削除し、二つの空間まで挿入します」。 しかし、2つのスペースの代わりに別の文字を挿入する簡単な方法もありますか?たとえば、コンマ(,)またはコンマとスペース(,)ですか? 与えられた: 8 9 10 32 私は次のようになりたいです: 8, 9, 10, 32 または: 8,9,10,32


2
大文字小文字を変えずに文字列を置き換えますか?
原因私が働いているドメイン固有言語で気まぐれに、私は頻繁に交換する(選択的ではなく、グローバル)のタスクに直面しtermたりTERMしwordたりWORD、それぞれ。 つまり、大文字と小文字を区別せずにを検索し、元の大文字/小文字をそのままにして、termそれを置き換えword ますterm。 全体の一貫した大文字/小文字termをチェックするのは難しく、実際には必要ないので、大文字/小文字の/を/ の最初の文字で決定することに決めます。wordWORDterm どうすればこれを達成できますか?
18 substitute 

5
視覚的な選択をキーボードにコピーした後、元の場所に戻ります
突然、その段落をコピーする必要があると判断したときに、カーソルが段落の中央にあります。 そこでvip、視覚的に入力して段落を選択します。 今、私はcmd+Cクリップボードにコピーするためにヒットします(これはシステムによって異なる場合がありますが、私の投稿の中心的な質問に関連するべきではありません)。 目的の位置ではなく、私が始めたときの位置です。 で選択を非視覚的にヤンクすると同じ問題が発生することに注意してくださいyip。 このような選択/コピーアクションを実行した後、デフォルトの動作を「元のカーソル位置に戻す」ようにしたいと思います。これを可能にする構成はありますか?

1
Vimの実際の高さと幅を取得するにはどうすればよいですか?
winheight()そしてwinwidth()現在のウィンドウ内の列/行数を返します。私が探しているのは、編集領域の実際の高さと幅に近いもの、または端末で実行されている場合は表示されている領域です。問題はwinheight()、winwidth()これらの値から計算されたアスペクト比が実際のアスペクト比とは無関係であることです。 :echo winwidth('%') winheight('%') winwidth('%') * 1.0 / winheight('%') 104 51 2.039216 バッファー領域のスクリーンショットのサイズは936x918ピクセルで、表示されるアスペクト比はになり1.019608ます。フォントのサイズを使用して実際の値を取得できると思いますが、どうすればよいですか? これは、垂直分割でVimのヘルプを開くにはどうすればよいですか?。Nobe4のソリューションを適応させようとしています。

5
vimにvimコマンドをパイプすることは可能ですか?
次のシェルを実行したい。 wea-this is the end of the second word | vim j exit 0 キーストロークをパイプしてw(単語を進めて)、e(単語の終わり)、a(追加)、-this is the end of the second word(テキスト)を、j既に単語が含まれている名前の付いたVimドキュメントにパイプすることを期待していました。 シェルスクリプトを実行すると、次のエラーが発生しました。 /root/bin/tt.sh: line 1: wea-this: command not found Vim: Warning: Input is not from a terminal Ubuntu 14.04を実行しています。2つのタイプの回答があります: この望ましい結果を達成するための配管の使用方法。 「Vimコマンド」(edコマンドまたはsedコマンドではない)を使用して、シェルスクリプトからテキストドキュメントを編集できる別の方法。
18 invocation 

1
数値が大きいとvimの実行が遅くなりますか?
これは本当に難しい質問のように思えますが、私はPythonファイルに1000桁の長さの数字があり、そのファイルの実行は非常に遅いようです。何らかの処理が行われているかどうかはわかりません知らない。 ラインナップを押すjと、1秒以下の明確な一時停止があり、それは非常に痛いです! 私はこれをPythonファイルにしか持っていませんが、他の人には起こりません。 番号を削除した後、ファイルは再び正常に動作します... 番号は次のとおりです。 number=("""7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450""") それは実際には数字ではなく、文字列です。

4
[0] [d] [$]よりも速く行をクリアします
行のテキストを消去するよりも速い方法はありますか を押し0て最初にジャンプし、次に d$行の終わりまで削除するために押す? また、インデント以外のすべてを削除する場合はどうなりますか?それを行う方法はありますか?


4
Vim内からの「STDINからの読み取り」メッセージを抑制するにはどうすればよいですか?
Vimを使用してstdinから読み取ると、情報メッセージが出力されます。 $ echo foo | vim - Vim: Reading from stdin... $ これは単なる例です。実際の使用では、シェル構造は許可されていません。 vim <(echo foo)オプションではありません。 Vimオプションやvimrc設定のみを使用してそれを抑制できますか? これが何であるかを知る必要がある場合は、マンページ(恥知らずのプラグ)を読むためにVimを使用しようとしています。GNUの男は、シェル構造を許可していないMANPAGER、と使用することによりftplugin/man.vim、および他のもの、私は正常にだけ使用して快適な経験を持っているために管理していますMANPAGER="vim -"。最後に残った迷惑は、私が見たすべてのマンページの後に印刷された見苦しいメッセージです。
18 vimrc  options 


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