【问题标题】:VI replace or remove the first character from line to lineVI 逐行替换或删除第一个字符
【发布时间】:2014-12-18 06:40:35
【问题描述】:

vi中,如果是指定字符#,如何逐行替换或删除第一个字符。

line 1
...
...
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#   fastcgi_split_path_info ^(.+\.php)(/.+)$;
#   # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
#   # With php5-fpm:
#   fastcgi_pass unix:/var/run/php5-fpm.sock;
#   fastcgi_index index.php;
#   include fastcgi_params;
#}
...
end of line

【问题讨论】:

标签: vim vi


【解决方案1】:

作为它的 vim,有几种方法可以做到这一点。

第一个解决方案

gg4ctrl+vgg16x

gg4 将光标移动到第 8 行的第一个字符(注释开始处)
ctrl+v 切换到可视块模式,在此模式下您可以选择文本列
@987654327 @移动到注释块的最后一行,选择整个第一列
x删除您选择的所有内容

第二种解决方案

:4,16s/#//
这将简单地删除 # 在 4 和 16 之间(包括 4 和 16)之间的每一行中的第一次出现。如果您的注释散列不是该行中的第一个字符而是前面有空格,则此命令特别有用。

第三种解决方案

是对第二种解决方案的轻微修改,如果您使用相对行号(意味着行不是递增编号,而是指示与当前光标位置的偏移量),则该解决方案很有用

:.,.+5s/#//
删除光标位置和光标位置下 5 行之间的每一行的 #

【讨论】:

  • 注意s/^#//s/#// 可能做不同的事情。
【解决方案2】:

这是你学习How to use macro?的机会。以下是步骤:

1. Place your cursor at start line
2. In normal mode type "q" followed by any letter (name of macro) (say "qa").
3. Now vim has started recording your macro.
4. Go to start of line by pressing "0"
5. Delete character under cursor by pressing "x"
6. Now go to next line by pressing "j".
7. Now press "q" to stop recording.

现在你有一个名为 amacro ,它转到行首,删除该行中的第一个字符,然后转到下一行。

您可以使用"@" 后跟宏名称(在本例中为"@a")来播放宏。您也可以使用"@@" 播放上次播放的宏。

假设您想为20 行执行此操作。使用20@a 运行此宏20 次,所有20 行的第一个字符将被删除。

【讨论】:

    【解决方案3】:

    我这样做非常方便的方法是使用<ctrl-v>(可视模式)并逐行选择您想要的列。然后使用x 删除视觉选择的字符。

    您也可以在每行的开头插入字符。

    【讨论】:

      【解决方案4】:

      您真正想要的是一个评论插件,例如commentary(我使用)、Nerd CommenterEnhCommentifytComment、...、etc

      如果你想跳过插件,那么你可以使用这些受评论启发的快速 n' 脏映射:

      nnoremap <expr> gcc getline('.') =~ '^#' ? '0"_xw' : "gI#\<esc>w"
      xnoremap <expr> gc ':norm! ' . (getline("'<") =~ '^#' ? '0"_x' : "gI#") . "\<cr>"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多