Jac*_*oen 48 vim select function definition
我已经为Vim进行了近一周的文本编辑工作了.我想知道选择C函数定义的最快方法.
例如,如果我有这样的函数:
void helloworlds( int num )
{
int n;
for ( n = 0; n < num; ++n ) {
printf( "Hello World!\n" );
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能删除整个定义,包括函数名称?
Dav*_*ain 73
在Vim中很常见,有很多方法!
请注意,前两个解决方案取决于缺少空行.
如果光标位于带有函数名称的行上,请尝试d}.它将删除下一个块(即您的函数体)的所有内容.
在函数体内部,dap将删除"段落".
您可以删除大括号块da}.(如果您喜欢这种语法,我推荐Tim Pope的精彩surround.vim,它增加了更多具有类似感觉的功能).
您还可以尝试使用正则表达式删除,直到下一个左下方缩小的大括号: d/^}Enter
]]并[[移动到下一个/上一个第一列花括号(相当于使用/和?上面提到的那个正则表达式.结合d运动,你实现相同的效果.在Python模式的插件中,这些运算符被重新定义为完全意味着你在寻找什么:从功能到功能.
如果您在标题/名称或块之前的行上,da}应该这样做.
如果你在一个区块之下,你也可以使用Vim搜索的方便的"偏移"功能.d?^{?-1将在第一次出现第一列开口花括号之前向后删除一行.键入此命令有点棘手.也许你可以用<leader>它来制作一个捷径.
我在Vim中没有做太多的C编程,但肯定有插件可以帮助解决这个问题.在GitHub上试试Vim Scripts或他们的镜像.
Nic*_*kiy 19
删除整个函数,包括其定义,例如:
function tick() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
f{应该这样做,或者只是$.V%d(视线,移动到匹配对,删除)如果您的功能如下所示:
function tick()
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
J(用下面的行加入当前行.这也将光标放在结果行的最后一个字符上{,只是下一个命令所需的那个字符.)V%d(视线,移至匹配对,删除.)要么
V[Down]%d(视线,向下移动一行,移至匹配对,删除.)如果您愿意安装插件,vim-textobj-function将为您vif提供 Visual select Inside Function 和vafVisual select A Function。
daf将删除函数,包括签名行和函数体 ( {})
此插件定义的文本对象更具体,它们不依赖于函数体是连续的文本块或{放置在行的第一个字符处。
缺点是您依赖于外部插件。
您可以使用此快捷方式删除函数,也删除花括号之间的行,即if-else语句,while,for循环等之间的代码。
在花括号开始/结尾按Shitf + v [ 将使您进入可视模式]。
然后按] +},即] + Shitf] -如果您位于开始括号中。
然后按[+ {即[+ Shitf [ -如果在大括号中。
然后按DEL键删除选定的行。
最简单、最直接的方法如下(在函数内的任何地方都可以工作):
v enter visual mode
{ move to first brace in function (may have to press more than once)
o exchange cursor from top to bottom of selection
} extend selection to bottom of function
d delete selected text
Run Code Online (Sandbox Code Playgroud)
完整的命令序列是v{o}d。注意,除了删除之外,其他操作也可以用同样的方法进行。例如,要复制函数,请使用y(yank) 而不是d。
| 归档时间: |
|
| 查看次数: |
20276 次 |
| 最近记录: |