为什么这一系列命令不起作用

时间:2018-06-24 02:33:49

标签: vim

我正在尝试创建一个命令,该命令将当前行复制到新选项卡,然后将其中断(.),然后在下面(文本末尾)添加一个空白行,最后转到开头文字(第一行)。我正在使用以下代码:

command Lnew y | tabnew | pu | s/\. /\r\r/g | noh | o | 1G 

它可以工作到noh部分,但是o1G部分不起作用。问题出在哪里?

3 个答案:

答案 0 :(得分:3)

您的命令是Ex命令和普通模式命令的混合。您有两种选择:

  • 仅使用Ex命令

     @foreach($items as $indexKey => $item)
    <div class="MenuPage_contentArea">
    <div class="Category_root" id="one">
    <div class="Category_categoryHeader">
    
    <div><h2 class="Category_name">{{$item->item_category}}</h2></div>
    <div class="Category_description"></div>
    </div>
    
      <div class="Category_itemsContainer">
      <div class="Category_itemContainer">
      <button class="Item_root Button_root">
      <div class="Item_image" style="background-image: url('{{ asset('images/' . $item->item_image) }}');"></div>
    
    <div class="Item_itemContent">
    <div class="Item_topSection">
    <span class="Item_name">{{$item->item_title}}</span>
    
    <span class="Item_price">${{$item->item_price}}</span></div>
    <div class="Item_description">{{$item->item_details}}</div>
    </div>
    </button>
    </div>
    </div>
    </div>
    </div>
    @endforeach
    
  • 在普通模式命令前加上y | tabnew | put | s/\. /\r\r/g | nohlsearch | put='' | 1

    :help :normal

    使用y | tabnew | put | s/\. /\r\r/g | nohlsearch | normal! o^O1G 插入文字<C-v><C-o>

答案 1 :(得分:2)

可能的改进:

command! Lnew y | tabnew | pu  | -d | s/\. /\r/g | noh | pu=''  | 1

Ex'put'命令在复制的行上方添加新行。添加“ -d”命令可解决此问题。

通过我的阅读,该问题询问有关在句点处拆分并在文本末尾添加空白行的问题。在替代命令中似乎只需要一个'\ r'。

答案 2 :(得分:1)

在“查找并替换”命令中,还必须跳过空格,因此,代替:

s/\. /\r\r/g

您必须使用:

s/\.\ /\r\r/g

在Vim成立的初期,我一直在为此苦苦挣扎。希望这会有所帮助。