我有一个如下所示的文件:
2067 24311 <hkxhk> {00}
2069 17219 <hkxhk> {00}
2071 20931 <hkxhk> {00}
2073 5557 <hkxhk> {00}
2075 2127 <hkxhk> {00}
2077 20947 <hkxhk> {00}
2081 18088 <hkxhk> {00}
Run Code Online (Sandbox Code Playgroud)
我想替换第一列值,使其看起来像
5 24311 <hkxhk> {00}
5 17219 <hkxhk> {00}
5 20931 <hkxhk> {00}
5 5557 <hkxhk> {00}
5 2127 <hkxhk> {00}
5 20947 <hkxhk> {00}
5 18088 <hkxhk> {00}
Run Code Online (Sandbox Code Playgroud)
其中第一个空格分隔列已替换为新值,在本例中为 5。
:%s/^\\S*/5/\n
Run Code Online (Sandbox Code Playgroud)\n\n%s
\xe2\x80\x93 在整个文件中搜索,\n ^
\xe2\x80\x93 行开头,\n \\S
\xe2\x80\x93 任何非空格字符,\n \\S*
\xe2\x80\x93 任意数量的任何非空格字符- 空格字符,\n5
\xe2\x80\x93 你的新值。
qq0cw5<Esc>q\n:%norm! @q\n
Run Code Online (Sandbox Code Playgroud)\n\nqq
\xe2\x80\x93 开始录制一个名为 的宏q
,\n 0
\xe2\x80\x93 将光标置于一行的开头,\n cw5
\xe2\x80\x93 将一个单词替换为, \n \ xe2\x80\x93 返回正常模式,\n5
<Esc>
q
\xe2\x80\x93 结束宏录制;
%norm!
\xe2\x80\x93 将普通模式命令应用于文件的每一行,\n @q
\xe2\x80\x93 执行宏q
(正常模式命令)。
gg0<C-v>G3lc5<Esc>\n
Run Code Online (Sandbox Code Playgroud)\n\ngg0
\xe2\x80\x93 将光标放在文件开头,\n <C-v>
\xe2\x80\x93 启动块选择模式,\n G
\xe2\x80\x93 转到最后一行,因此选择单字符宽度列 ( H\xc3\x971 块),\n 3l
\xe2\x80\x93 剩下三个字符,因此选择 H\xc3\x974 块,\n c5<Esc>
\xe2\x80\x93 将每行中的选择替换为5
并返回正常模式。
您的问题是如此简单,以至于搜索和替换方法在这里被证明是最简单的,而在一般情况下记录宏比发明正则表达式要方便得多。
\n 归档时间: |
|
查看次数: |
4290 次 |
最近记录: |