web-dev-qa-db-fra.com

Y a-t-il une commande pour scinder des lignes dans Vim?

Dans Vim, le J La clé rejoint deux lignes ensemble. Y a-t-il une combinaison de touches similaire, intégrée et intégrée aux lignes scindées avec une nouvelle ligne (à la position du curseur ou similaire)?

Alternativement, quelle serait la manière la plus robuste de définir une combinaison de clé à faire cela (en mode normal, pas en mode insertion)?

15
Andrew Ferrier

Non, il n'y a pas de commande intégrée pour cela.

Quand je veux diviser sur un <Space>, Je fais r<CR>.

--- ÉDITER ---

Le commentaire de Keith-Nicholas m'a rappelé de cette question. FWIW Je suis proposé une méthode "universelle" espérons-elle en moyenne:

function! BreakHere()
    s/^\(\s*\)\(.\{-}\)\(\s*\)\(\%#\)\(\s*\)\(.*\)/\1\2\r\1\4\6
    call histdel("/", -1)
endfunction

nnoremap <key> :<C-u>call BreakHere()<CR>
16
romainl

a EnterEsc se séparer à droite du curseur, ou i EnterEsc se diviser à gauche.

5
Scott

La voie la plus simple que j'ai trouvée à fractionner des lignes dans Vim est la commande de mode normale gq (Tapez les deux lettres de succession rapide en mode normal ou visuel):

  • En mode visuel, il sera divisé tout ce qui est sélectionné.
  • En mode normal, vous suivez gq avec une motion.

Par exemple, gql _ va diviser une ligne en largeur actuellement définie. Pour définir la largeur des lignes fractionnées différentes de votre réglage actuel, vous pouvez utiliser

:set textwidth=<n>

Où n = nombre de caractères que vous souhaitez dans une ligne, par exemple 10 et remplacez-vous à votre largeur normale lorsque vous avez terminé.

Vous avez obtenu cette information d'une vidéo YouTube de Kholidfu qui indique comment rejoindre et scinder des lignes en mode normal à l'aide d'un mouvement: Tutoriel VIM - Join et Split Lines .

2
vdicarlo

Vous pouvez définir votre propre carte. Définir z comme la commande par exemple:

:map z i<CTRL+m>
1
suspectus

Vous pouvez enregistrer une macro:

en mode normal, tapez "q +" pour démarrer l'enregistrement. Appuyez sur "I", la macro que vous souhaitez enregistrer. Puis appuyez à nouveau sur "Q" pour arrêter l'enregistrement.

pour utiliser la macro, allez en mode normal et tapez "@ + lettre".

dans mon cas, j'ai utilisé le "B" pour utiliser cette macro: pour enregistrer le type en mode normal "qbiq" pour utiliser le type en mode normal "@b"

0
luizhj