単一のコマンドを使用してviエディターから100行を削除します


33

Ubuntuを使用して、viエディターから100行すべてを削除しようとしていますが、1つのコマンドでこれを行うことについてのインタビューの質問がありました。


VIソリューションではなく、コマンドラインから:echo -n > <file>ファイルからすべての行を削除します(実際にはファイルを「」で上書きします)。
azz

3
@Der echoそのために使用する必要はまったくありません。> $fileうまく動作します。
CVn

4
viインタビューで質問する会社はどんな会社ですか?
CVn

2
この質問はviの基本的な知識で簡単に答えられます。vimがインストールされているコンピューター(Ubuntuではvim-gtk、vim内のxclipboardにアクセスできるため、パッケージをお勧めします)vimtutorで、コマンドライン(vim内ではない)で入力して、基本の対話型チュートリアルを取得します。30分以上かかることはありません。vi/ vimを使用するための最良のスターターガイドです。
evilsoup

1
@MichaelKjörling申請者が以前の経験vi(口頭または履歴書)に言及した場合、または質問に「システム管理者としてコマンドラインエディターのことを知っている必要があります。使用したことがありviますか?」
ワイルドカード

回答:


62

通常モードでは、

100dd

dd現在の行を削除します。そのコマンドの前に100100回繰り返されます。

現在の行から始まるファイルの行数が100行未満の場合、vi実装に応じて、いずれかの削除に失敗するか、存在する数だけ削除されます。の場合vimcpaka compatibleオプションがオンかどうかによって異なります。


間違ったanwser、それは現在の行だけ削除される
マユールメータ

私は一度に1つのコマンドを使用して100行を削除したい
マユールメータ

13
100dd正解です。あなたは何をしているのだろうか。
ott--

1
@mayurMehtaは、どの会社がこのような質問をしているのか分からず、回答として何を期待しているのかも分からない。しかし、初心者のVIユーザーであれば、100ddが正しい答えであることがわかります。
ムニム

1
@vgoff私は知りません。もし彼らがあなたの基本的なvimスキルをテストするための一般的な解決策を探していないのなら、それはインタビュイーを切り詰めるのはちょっとした質問です。100ddが答えだと思います。インタビュアーが「ファイルの現在のカーソルからの行が100行未満の場合はどうなりますか?」と尋ねた場合、「コマンドは現在のカーソルからできることを削除します」と答えます。それは完全に合理的です。インタビュアーが明確にしない限り、カーソルが最初の行にないのはなぜですか?このようなトリックの質問は嫌いです。
ムニム

44
  1. 現在の行から(含む)100行先を削除する

    • dd(現在の行を削除)を100回繰り返します:

      100dd
      
    • 現在の行から99行先まで削除する

      d99j
      
  2. 現在の行から(含む)100行後方に削除する

    d99k
    
  3. 特定の範囲の行を行番号で削除します

    :1,100d
    
  4. 現在の行で始まる範囲の行を削除します

    :.,.+99d
    

などなど


2
数4は、101th(0 + 100)行まで、現在の行(0)を削除し、代わりに、従って101行は100試行求め:.,+99d
オリヴィエデュラック

ドラット、そして私は動きのものを正解にしました!ありがとう。
役に立たない

Solarisの10の下のVIで、私のためではなく、作品の罰金以上#4 - 100ddはどちらか私のために動作しませんでした
DemiSheep

8

場合は、すべてのファイルの行が削除され、このviのコマンドは、削除の範囲を指定します:

:1,$d

1は最初の行を$示し、最後の行を 示します


または:%d (「:」コンテキストでは、「:%...」は「:1、$ ...」のショートカットです)
オリビエデュラック

素晴らしい:d Gキー&rarr; 実際の[たとえば最上行]から最下行までのすべてのコンテンツを
削除し

3

ファイル内のすべての行を削除しますか?でファイルを開きますvi。一方で最初の行の先頭に-あなただけのファイルを開くカーソルのデフォルトの場所-プレスがEsc続きますdG

念のため、このアクションdは削除をG示し、ファイルの最終行を示します。したがって、を押すdGと、現在の行から最後の行までのすべての行が削除されます。

削除する連続した行(たとえば、行101から200)がわかっている場合は、次のキーシーケンスを入力します Esc:101,200d


ファイルを開いたばかりでファイルの先頭にいる場合は、エスケープを押す必要はありません。自動的に(デフォルトで)通常モードになります。
vgoff

3

ファイルのどこにいても、次のことができます ggdG

:%dキーを押す回数が少ない方が良いでしょう。shiftと、enterキーを数えると、実際には上記よりもさらに2回キーが押されます。

そのような100ddことをすると、現在の場所から最大 100行しか削除されず、現在の行の位置によっては、ファイルからすべての行が削除されない場合があります。


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