创建一个新的Vim命令来执行几个内置命令?

时间:2016-05-10 20:55:39

标签: vim

例如,我想创建一个名为Mycmd的命令(第一个字母需要大写)。乳清我处于正常模式并键入:Mycmd,我希望可以完成以下命令系列:

:set ts=2
:set sw=2
:set sws=2
:set expandtab

我发现command语法似乎在正确的轨道上,例如: [StackOverflow],但我不能用两个以上的命令来做(即:设置一件事:set另一件事)。

我并不真正考虑nmap,因为我想创建命令而不是映射到热键,尽管nmap允许同时执行命令(例如nmap <F7> :set ts=2<enter>:set sw=2<enter> })

2 个答案:

答案 0 :(得分:2)

你想要的是:

package com.something.example;

import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;


public class MainActivity extends ActionBarActivity {

    private Button startLie, startTruth,
            startIdiot, startGenius, stopScan;
    private MediaPlayer play;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        startLie = (Button) findViewById(R.id.startlie);
        startLie.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                stopPlaying();
                play = MediaPlayer.create(MainActivity.this, R.raw.lie_detector);
                play.start();
                play.setOnCompletionListener(new OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer play) {
                        play.release();
                    }
                });
            }
        });

        stopScan = (Button) findViewById(R.id.stopScan);
        stopScan.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                play.stop();
                };
            });

        startTruth = (Button) findViewById(R.id.starttruth);
        startTruth.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                stopPlaying();
                play = MediaPlayer.create(MainActivity.this, R.raw.truth_detector);
                play.start();
                play.setOnCompletionListener(new OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer play) {
                        play.release();
                    }
                });
            }
        });

        startIdiot = (Button) findViewById(R.id.startidiot);
        startIdiot.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                stopPlaying();
                play = MediaPlayer.create(MainActivity.this, R.raw.idiot_detector);
                play.start();
                play.setOnCompletionListener(new OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer play) {
                        play.release();
                    }
                });
            }
        });

        startGenius = (Button) findViewById(R.id.startgenius);
        startGenius.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                stopPlaying();
                play = MediaPlayer.create(MainActivity.this, R.raw.genius_detector);
                play.start();
                play.setOnCompletionListener(new OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer play) {
                        play.release();
                    }
                });
            }
        });

    }

    private void stopPlaying() {
        if (play != null) {
            play.stop();
            play.release();
            play = null;
        }
    }

您(和所有人)需要的是Editorconfig

答案 1 :(得分:2)

只是做:

command Mycmd set ts=2 | set sw=2 | set sws=2 | set expandtab

|用于分隔任何Vim脚本中的命令。

甚至更简单:

command Mycmd set ts=2 sw=2 sws=2 expandtab

要更改设置,请显示更改:

command Mycmd set ts=2 sw=2 sws=2 expandtab ts? sw? sws? et?

要映射它:

nnoremap <silent> _I :Mycmd<cr>